[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以及&關閉終端的時候,腳本會自動的關閉。