三、keepalived配置nginx自动重启,实现7X24不间断服务
一、编写nginx重启脚本
在/etc/keepalived/目录下,创建nginx重启脚本
vi check_nginx_alive_or_not.sh
内容如下
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机则重启
if [ $A -eq 0 ];then
/opt/server/nginx/sbin/nginx
# 等待3秒再次检查nginx,如果没有启动成功,则停止keepalived,使其启动备用节点
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
二、配置keepalived监听脚本
! Configuration File for keepalived
global_defs {
router_id keep_47
}
vrrp_script check_nginx_alive{
#定义脚本位置
script "/etc/keepalived/check_nginx_alive_or_not.sh"
#每隔两秒运行上一行脚本
interval 2
#如果脚本运行成功,则升级权重+10,如果为-10,则表示脚本运行失败,则权重-10
weight 10
}
#计算机节点
vrrp_instance VI_1 {
state MASTER
#当前实例绑定的网卡
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script{
#追踪上面定义的nginx脚本
check_nginx_alive
}
virtual_ipaddress {
172.17.35.161
}
}
三、重启keepalived
systemctl restart keepalived
四、测试
停掉主节点的nginx服务后
访问虚拟IP http://172.17.35.161/以然能正常访问。
原因是keepalived服务会每间隔两秒去检查nginx服务状态,如果nginx服务停止则启动nginx服务,如果3秒后,nginx服务还未启动,则停止keepalived服务,使得虚拟IP绑定到备用节点,备用节点代替主节点工作,实现7X24小时不间断服务。