編寫SHELL劇本,來實(shí)現(xiàn)Nginx處事歷程的高HA,劇本內(nèi)容如下:
#!/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
我稍為表明一下,這是一個(gè)無限輪回的劇本,放在主Nginx呆板上(因?yàn)榻癯饕怯伤峁┨幨拢扛?秒執(zhí)行一次,用ps -C 呼吁來收集nginx的PID值到底是否為0,假如是0的話(即Nginx歷程死掉了),實(shí)驗(yàn)啟動(dòng)nginx歷程;假如繼承為0,即nginx啟動(dòng)失改,則封鎖本機(jī)的Keeplaived歷程,VIP地點(diǎn)則會(huì)由備機(jī)經(jīng)受,雖然了,整個(gè)網(wǎng)站就會(huì)由備機(jī)的Nginx來提供處事了,這樣擔(dān)保Nginx歷程的高可用。
雖然尚有此外步伐,好比我們可以寫別的的SHELL劇本,每隔5秒wget首頁的index.php或index.jsp文件或ping網(wǎng)站的VIP地點(diǎn),假如$$?返回碼為非零值(即錯(cuò)誤),我們也可以封鎖主Nginx呆板,由備機(jī)經(jīng)受,有樂趣的伴侶可以自行編寫這些劇本。