网站开发u盘128够吗/百度自动点击器下载
Keepalived+Nginx高可用简介
Nginx 高可用部署通常借助 Keepalived 实现,Keepalived 能通过 VRRP(虚拟路由冗余协议)让多个 Nginx 服务器组成一个热备集群,当主服务器故障时自动切换到备用服务器,保障服务不间断。
一、环境准备
角色 | IP地址 |
主服务器(Master) | 192.168.179.130 |
备用服务器(Backup) | 192.168.179.131 |
虚拟 IP(VIP) | 192.168.179.135 |
Keepalived版本 | 1.4.5 |
二、安装Keepalived服务
1、在节点Master上安装Keepalived
#步骤一:安装编译需要的软件包
[root@master ~]# yum install -y pcre-devel openssl-devel popt-devel #安装依赖包#步骤二:安装keepalived服务
tar -zxvf keepalived-1.4.5.tar.gz
cd keepalived-1.4.5/ && ./configure --prefix=/opt/sumscope/keepalived --sysconf=/etc
make && make install
cp /opt/sumscope/keepalived-1.4.5/keepalived/etc/init.d/keepalived /etc/init.d/chkconfig --add keepalived
chkconfig keepalived on
cp /opt/sumscope/keepalived-1.4.5/keepalived/keepalived /usr/sbin/#步骤三:配置keepalived配置文件
########################################################配置文件###############################################
[root@master ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id keep1; #keep1是本节点的标识,一般为hostnamescript_user root #使用root执行 enable_script_security
}vrrp_script check_mysql {script "/etc/keepalived/check_nginx.sh"#检测Nginx状态的脚本路径interval 2 #检测间隔时间weight -20 #如果如果上述条件成立权重-20fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)rise 1 #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 {state MASTER #主节点为MASTER,从节点为BACKUPinterface ens33 #本机网卡名称virtual_router_id 100 #虚拟路由的ID号,两个节点设置的参数必须一样,相同的VRID为一组,它将决定多播的地址。mcast_src_ip 192.168.179.130 #本机的IP地址priority 100 #节点的优先级(0~254之间),MASTER比BACKUP高nopreempt #优先级设置,异常恢复后再次抢占的问题。advert_int 1 #组播信息发送间隔,两个的参数必须一样,默认为1s。authentication {auth_type PASSauth_pass p #按照实际生产的需求来(一般为root密码)}track_script {check_mysql}virtual_ipaddress {192.168.179.135 #虚拟IP地址,两台主机的必须一致。}
}
########################################################配置文件################################################步骤四:配置keepalived检测脚本内容
########################################################Nginx检测脚本内容###############################################
[root@master ~]# vim /etc/keepalived/check_nginx.sh #检测Nginx服务断开就杀掉keepalived进程,使VIP漂移#!/bin/bash counter=$(netstat -na|grep "LISTEN"|grep ":443 "|wc -l)if [ "${counter}" -eq 0 ]; thenservice nginx stopfi########################################################Nginx检测脚本内容################################################步骤五:对检测脚本添加执行权限、启动keepalived服务[root@master ~]# chmod +x /etc/keepalived/check_nginx.sh[root@master ~]# /etc/init.d/keepalived start
2、在节点Backup上安装Keepalived
安装方法与Master上的安装方法一致,但是配置文件需要修改
#步骤一:配置keepalived配置文件
########################################################配置文件###############################################
[root@slave ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id keep2;script_user rootenable_script_security
}vrrp_script check_mysql { script "/etc/keepalived/check_nginx.sh" #检测脚本所在的位置interval 2weight -20fall 2rise 1
}
vrrp_instance VI_1 {state BACKUP #修改状态名称interface ens33 #修改网卡名称virtual_router_id 100mcast_src_ip 192.168.179.131 #自己的IP地址priority 80 #作为备节点权重要比主节点小advert_int 1authentication {auth_type PASSauth_pass p}track_script {check_mysql }virtual_ipaddress {192.168.179.135 #虚拟IP地址}
}
########################################################配置文件################################################步骤二:配置keepalived检测脚本内容用于检测Nginx的状态
########################################################Nginx检测脚本内容###############################################
[root@master ~]# vim /etc/keepalived/check_nginx.sh #检测Nginx服务断开就杀掉keepalived进程,使VIP漂移#!/bin/bash counter=$(netstat -na|grep "LISTEN"|grep ":443 "|wc -l)if [ "${counter}" -eq 0 ]; thenservice nginx stopfi########################################################Nginx检测脚本内容################################################步骤三:对检测脚本添加执行权限、启动keepalived服务[root@master ~]# chmod +x /etc/keepalived/check_nginx.sh[root@master ~]# /etc/init.d/keepalived start
注意:因为keepalived中配置Nginx状态检测脚本,keepalived在启动时会执行检测脚本,所以等Nginx服务启动成功后再启动keepalived服务,否则服务将无法启动keepalived。
3、启动keepalived服务验证VIP是挂起
三、安装Nginx
详见上篇文章:Nginx — Nginx安装-CSDN博客
四:测试
1、配置nginx访问不同的主机返回不同的结果
配置如下:配置https访问
当虚拟IP在MASTER主机上时访问nginx的8888端口返回:MASTER
当虚拟IP在BACKUP主机上时访问nginx的8888端口返回:BACKUP
2、浏览器上进行访问测试
浏览器输入: https://192.168.72.135:8888/
2.1、正常情况下访问虚拟IP返回的结果
2.2、模拟主节点故障
2.2.1、在主节点和备节点上观察VIP漂移的情况
2.2.2、浏览器访问看是否实现了故障自动迁移
访问VIP已经成功访问到备节点的资源!!