天天看點

keepalived處理高可用問題

tomcat挂掉nginx可以分發到别的tomcat,nginx要是挂掉,就需要處理高可用問題了 1.建構兩個提供一樣并發服務的nginx,并啟動 scp -r tengine.2.0 [email protected]:/opt/local/soft/ 複制tengine.2.0到node2伺服器下 `pwd`是擷取相同路徑 # 注意tengine就是Nginx 2.在兩個節點分别安裝keepalived yum -y install keepalived 3.主節點修改keepalived的配置 vi /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER #主機 interface eth0 virtual_router_id 51 priority 100 #主機權重 advert_int 1 authentication { auth_type PASS auth_pass 1111 }

virtual_ipaddress { #主副機虛拟IP要設定一樣 192.168.57.200 dev eth0 label eth0:tvip } } 4.備節點修改keepalived.conf檔案 vrrp_instance VI_1 { state BACKUP #副機 interface eth0 virtual_router_id 51 priority 98 #副機權重 advert_int 1 authentication { auth_type PASS auth_pass 1111 }

virtual_ipaddress { #設定虛拟IP 192.168.57.200 dev eth0 label eth0:tvip } }

5.分别重新開機keepalived (service keepalived start ) 關掉主節點發現備節點繼承虛拟ip192.168.57.200 繼續提供服務

這裡有個問題是隻适用于主節點當機了,如果隻是nginx程序挂了是不起作用的

寫個腳本探測nginx程序,如果程序沒有了,關掉keepalived程式來進行主備切換

這裡主從節點一樣配置就是修改下state和priority

vrrp_script check_nginx { script "/root/nginx.sh" ##監控腳本 interval 2 ##時間間隔,2秒 weight 2 ##權重 }

vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx #監控腳本 }

virtual_ipaddress { 192.168.57.200 dev eth0 label eth0:tvip } }

腳本如下:cd /root vim nginx.sh 主從伺服器都添加 #!/bin/bash # 如果程序中沒有nginx則将keepalived程序kill掉 A=`ps -C nginx --no-header |wc -l` ## 檢視是否有 nginx程序 把值賦給變量A if [ $A -eq 0 ];then ## 如果沒有程序值得為 零 service keepalived stop ## 則結束 keepalived 程序 fi

注意修改腳本檔案的可執行權限chmod 755 nginx.sh

繼續閱讀