为了账号安全,请及时绑定邮箱和手机立即绑定

Keepalived脚本实现Nginx自动重启

标签:
Nginx

在上篇博文中,我们通过Keepalived实现了当服务器宕机后,Nginx自动切换,但是有一个问题,如果服务器没有宕机,只是Master节点的Nginx停止运行,但Master节点上的Keepalived还在正常运行,此时Keepalived的虚拟IP是无法跟Backup节点绑定的,导致无法访问到Backup节点上的Nginx,下面我们介绍一下,如何通过脚本实现当Master节点的Nginx停止运行,自动重启Master节点的Nginx,如果重启不了,就停掉Master节点上的keepalived,从而让虚拟IP跟Backup节点进行绑定。


编写脚本

vim /etc/keepalived/check_nginx_alive.sh
#!/bin/bash

# 获取nginx进程号
A=`ps -C nginx --no-header |wc -l`
# 判断nginx是否宕机,如果宕机了,尝试重启
if [ $A -eq 0 ];then
    # 尝试启动nginx
    /usr/local/nginx/sbin/nginx
    # 等待三秒钟,再次检查nginx是否运行,如果没有启动成功,则停止keepalived,使其启动备用机
    sleep 3
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        # 杀死keepalived进程,当该节点的keepalived没有运行,keepalived会认为该节点宕机,虚拟IP会跟其他节点进行绑定
        killall keepalived
    fi
fi


为脚本添加可执行权限

chmod +x /etc/keepalived/check_nginx_alive.sh

配置keepalived监听nginx

vrrp_script check_nginx_alive {
    script "/etc/keepalived/check_nginx_alive.sh"
    interval 2 # 每隔两秒运行上一行脚本
    weight 10 # 如果脚本运行成功,则升级权重+10
    # weight -10 # 如果脚本运行失败,则升级权重-10
}

在vrr_instance中添加新增监控脚本

track_script {
    check_nginx_alive   # 追踪 nginx 脚本
}

完整的keepalived配置


重启keepalived

systemctl restart keepalived

停止Master节点的Nginx,会发现Nginx会自动重启


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消