編寫SHELL劇本,來實現Nginx處事歷程的高HA,劇本內容如下:
#!/bin/bash
while :
do
nginxpid=`ps -C nginx --no-header | wc -l`
if [ $$nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 5
nginxpid=`ps -C nginx --no-header | wc -l`
echo $$nginxpid
if [ $$nginxpid -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
sleep 5
done
我稍為表明一下,這是一個無限輪回的劇本,放在主Nginx呆板上(因為今朝主要是由它提供處事),,每隔5秒執行一次,用ps -C 呼吁來收集nginx的PID值到底是否為0,假如是0的話(即Nginx歷程死掉了),實驗啟動nginx歷程;假如繼承為0,即nginx啟動失改,則封鎖本機的Keeplaived歷程,VIP地點則會由備機經受,雖然了,整個網站就會由備機的Nginx來提供處事了,這樣擔保Nginx歷程的高可用。
雖然尚有此外步伐,好比我們可以寫別的的SHELL劇本,每隔5秒wget首頁的index.php或index.jsp文件或ping網站的VIP地點,假如$$?返回碼為非零值(即錯誤),我們也可以封鎖主Nginx呆板,由備機經受,有樂趣的伴侶可以自行編寫這些劇本。