揭秘企业级web负载均衡完美架构(4)

本文介绍了一种利用Nginx_pid.sh脚本来监控Nginx进程的方法,以确保负载均衡系统的高可用性。当Nginx进程消失时,脚本会尝试重启,若重启失败,则停止Keepalived服务,使备用负载均衡器接管。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    第四部分:针对Keepalived的不足,用Nginx_pid.sh来监控nginx进程,实现真正意义上的负载均衡高可用。

    针对Nginx+Keepalived,编写nginx监控脚本nginx_pid.sh,此脚本思路其实也很简单,即放置在后台一直监控nginx进程;如进程消失,尝试重启nginx,如是失败则立即停掉本机的keepalived服务,让另一台负载均衡器接手,此脚本直接从生产环境下载:

       
    1. vim /root/nginx_pid.sh   
    2. #!/bin/bash  
    3. while  :  
    4. do  
    5.  nginxpid=`ps -C nginx --no-header | wc -l`  
    6.  if [ $nginxpid -eq 0 ];then  
    7.   /usr/local/nginx/sbin/nginx  
    8.   sleep 5  
    9. nginxpid=`ps -C nginx --no-header | wc -l`
    10.    if [ $nginxpid -eq 0 ];then  
    11.    /etc/init.d/keepalived stop  
    12.    fi  
    13.  fi  
    14.  sleep 5   
    15. done 

    然后置于后台运行 sh /root/nginx_pid.sh &,这种写法是错误的,这样你用root用户logout后,此进程会消失;正确写法为nohup/bin/bash /root/nginx_pid.sh &,附带下注释:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出root帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up),哈哈,差点老马失蹄了。

    后记:

    我的线上环境网络非常复杂,这也是LVS+Keepalived失败的原因。目前此套架构在1000并发的电子商务网站非常稳定,带来的直接影响就是nginx_backup一直处于闲置状态。相对于张宴的双机轮询而言,我感觉他的可能更加完美,因为目前我的Nginx仅仅只做了负载均衡器,如果以后有机会我会尝试做负载均衡器/反向代理加速。

    【51CTO.com独家特稿,非经授权谢绝转载,合作媒体转载请注明原文出处及作者!】

    【责任编辑: 老克 TEL:(010)68476606】
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值