续接上篇https://blog.csdn.net/qq_44299529/article/details/122987503
上回说到我们应该让nginx不间断的工作,只要主节点nginx没问题,就可以重启。除非主节点nginx出错,才切换成备用节点的nginx。那么现在就让我们来实现。
步骤:
1、进入到keepalived的配置文件,新建 check_nginx_alive_or_not.sh 脚本文件
2、check_nginx_alive_or_not.sh 脚本文件内容如下,根据注释,自行修改
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
#判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
# nginx的启动目录
/usr/local/nginx/sbin/nginx
# 等待3秒再次检查nginx,如果没有重启成功,则停止keepalived,使其启动备用机
sleep 3
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
kill keepalived
fi
fi
3、给予文件可执行权限
chmod +x check_nginx_alive_or_not.sh
4、进入主配置文件keepalived.conf,设置上述执行脚本文件check_nginx_alive_or_not.sh自动执行。
vim keepalived.conf
(1)先在里面添加一段每隔2秒执行脚本文件check_nginx_alive_or_not.sh的脚本
vrrp_script check_nginx_alive{
script "/etc/keepalived/check_nginx_alive_or_not.sh"
interval 2 #每隔2秒运行上一行脚本
weight 10 #如果脚本运行成功,则升级权重 +10
# weight -10 #如果脚本运行失败,则权重 -10
}
(2)在节点中调用上方写好的脚本check_nginx_alive
#调用上方写好的脚本check_nginx_alive
track_script{
check_nginx_alive #追踪nginx脚本
}
:wq 保存,退出。
5、修改了keepalived的配置文件,需要重启。
为测试效果,在重启之前,先把nginx停了
访问虚拟ip:192.168.217.2
重启keepalived。 systemctl restart keepalived
(注:我这里已经把keepalived注册为系统服务,所以可以这样重启,如果不清楚的可以查看上一篇看最后的扩展。如果不想做也没关系,手动kill它的进程再重启)
继续访问虚拟ip,成功!!!
当然你也可以自己测试,不断输入 ./nginx -s stop 把nginx关闭,看是否能正常访问。
嘿嘿,是不是不管怎么杀死nginx,都可以访问成功了呢~