Keepalived配置负载均衡服务其中一台的Nginx的进程停止,导致没有办法提供服务问题
物理服务器如果宕机,keepalived配置的BACKUP那台可以直接接管,但是如果只是MASTER那台的nginx服务意外停止服务,但是vip并没有漂移到BACKUP服务器,请求还是走MASTER,导致没有办法提供服务。处理办法,可以通过脚本+keepalived监测来操作。 配置如下脚本
[root@lb01 scripts]# cat chk_nginx_proxy.sh #!/bin/bash #如果nginx服务停止,则关闭keep. if [ `netstat -lntup|grep nginx|wc -l` -ne 1 ];then systemctl stop keepalived fi [root@lb01 scripts]# chmod +x chk_nginx_proxy.sh [root@lb01 scripts]# /server/scripts/chk_nginx_proxy.sh #脚本要可以执行 #测试: [root@lb01 scripts]# pkill nginx [root@lb01 scripts]# sh chk_nginx_proxy.sh [root@lb01 scripts]# ps -ef|egrep "nginx|keep"
#lb01配置 [root@lb01 scripts]# cat /etc/keepalived/keepalived.conf global_defs { router_id lb01 } vrrp_script chk_nginx_proxy { #<==定义vrrp脚本,检测HTTP端口。 script "/server/scripts/chk_nginx_proxy.sh" #<==执行脚本,当nginx服务有问题,就停掉keepalived服务。 interval 2 #<==间隔2秒。 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 53 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:3 } track_script { chk_nginx_proxy #<==触发检查。 } } vrrp_instance VI_2 { state MASTER interface eth0 virtual_router_id 52 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.4/24 dev eth0 label eth0:4 } }
#lb02配置 [root@lb02 scripts]# cat /etc/keepalived/keepalived.conf global_defs { router_id lb02 } vrrp_script chk_nginx_proxy { #<==定义vrrp脚本,检测HTTP端口。 script "/server/scripts/chk_nginx_proxy.sh" #<==执行脚本,当nginx服务有问题,就停掉keepalived服务。 interval 2 #<==间隔2秒。 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 53 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.3/24 dev eth0 label eth0:3 } track_script { chk_nginx_proxy #<==触发检查。 } } vrrp_instance VI_2 { state BACKUP interface eth0 virtual_router_id 52 priority 50 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.4/24 dev eth0 label eth0:4 } }
#测试: [root@lb01 scripts]# pkill nginx [root@lb01 scripts]# ps -ef|egrep "nginx|keep"