[TOC]
###实现功能
针对Nginx+Keepalived,编写nginx的运行监控脚本nginx_pid.sh,放置在后台一直监控nginx的进程;如果进程消失,尝试重启nginx,若重启失败,立即停掉本机的keepalived服务,让另一台负载均衡服务器接手。
###脚本
#!/bin/bash
while:
do
nginxpid=`ps -C nginx --no-header | wc -l`
if [ $nginxpid -eq 0 ];then
ulimit -SHn 65535 #防止因并发数量过大,导致linux报错
service nginx restart #启动方式根据实际情况而定
sleep 5
nginxpid=`ps -C nginx --no-header | wc -l`
if [ $nginxpid -eq 0 ];then
service keepalived stop #停止keepalived按照实际情况而定
fi
fi
sleep 5
done
###脚本启动
启动的时候使用nohup /bin/bash 脚本全路径 & (在linux中建议养成使用全路径的习惯) 例如 nohup /bin/bash /app/shell/nginx_pid.sh &
如果不使用nohup以及&关闭终端的时候,脚本会自动的关闭。