Keepalived軟件起初是專爲LVS負載均衡軟件設計的,用來管理並監控LVS集羣系統中各個服務節點的狀態,後來又加入了能夠實現高可用的VRRP (Virtual Router Redundancy Protocol ,虛擬路由器冗餘協議)功能。所以,Keepalived除了可以管理LVS軟件外,還能夠做爲其餘服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件nginx
Keepalived高可用服務對之間的故障切換轉移,是經過 VRRP 來實現的。在 Keepalived服務正常工做時,主 Master節點會不斷地向備節點發送(多播的方式)心跳消息,用以告訴備Backup節點本身還活着,當主 Master節點發生故障時,就沒法發送心跳消息,備節點也就所以沒法繼續檢測到來自主 Master節點的心跳了,因而調用自身的接管程序,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色
bash
關於怎麼安裝這裏不作敘述,首先配置 master 節點負載均衡
! Configuration File for keepalived global_defs { router_id ip地址 #路由器標識,最好寫主機名或者IP地址,用於標識 } vrrp_script chk_nginx { #配置檢查方式,chk_nginx爲自定義名稱 script "/etc/keepalived/nginx_check.sh" #腳本的文件地址 interval 2 weight 20 #此值須要大於MASTER的priority減去BACKUP的priority } vrrp_instance VI_1 { state MASTER #主節點爲:MASTER,備節點爲:BACKUP interface eth0 #當前虛擬機網卡 virtual_router_id 51 # 虛擬路由編號,主從要一直 priority 100 #優先級 數值越大,獲取處理請求的優先級越高 advert_int 1 authentication { #此爲認證方式,MASTER和BACKUP統一 auth_type PASS auth_pass 1314 } track_script { #調用上面的檢查腳本 chk_nginx } virtual_ipaddress { #設定VIP地址 18.50.129.74/24 } }
繼續配置slave節點。從節點backup配置和主節點同樣,只是state要改爲backup, priority 值要比master小點便可。測試
! Configuration File for keepalived global_defs { router_id ip地址 } vrrp_script chk_nginx { script "/etc/keepalived/nginx_check.sh" interval 2 weight 20 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1314 } track_script { chk_nginx } virtual_ipaddress { 18.50.129.74/24 } }
最後編寫腳本 nginx_check.shspa
#!/bin/bash A=`ps -C nginx --no-header | wc -l` if [ $A -eq 0 ]; then /usr/local/nginx/sbin/nginx sleep 2 if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then pkill keepalived fi fi
腳本說明:設計
腳本邏輯爲檢測進程若是沒有nginx就嘗試啓動一次,而後等礴兩秒,再檢測,若是尚未上進程就結束keepalived進程。這樣VIP就會移動到備份節點code
我這裏是yum安裝的Nginx,因此直接使用nginx命令能夠啓動nginx,若是你是源碼安裝,或者須要配置下環境變量或者更改下啓動命令和絕對路徑,並測試是否能正常啓動router
若是以爲等待兩秒的時候過長能夠更改成1秒進程
測試:ip
查看兩個節點的Nginx服務是否啓動成功,若是keepalived啓動成功會調用啓動Nginx,前提須要保證Nginx能正常啓動
在Master故意更改錯Nginx配置文件,並中止Nginx服務過幾秒查看VIP是否已經移動至BACKUP,正常是會移動到BACKUP節點
恢復Master節點,查看VIP是否回到Master,正常VIP會綁定到Master