以下是一個keepalived的案例:
master :192.168.200.11 運行服務httpd
slave :192.168.200.12 運行服務httpd
虛擬ip :192.168.200.16
global_defs { notification_email { [email protected] [email protected] [email protected] } notification_email_from [email protected] smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id HTTPD } vrrp_script check_httpd{ script "killall -0 httpd" interval 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 } notify_master "/etc/keepalived/master.sh" notify_master "/etc/keepalived/backup.sh" notify_master "/etc/keepalived/fault.sh" track_script { check_httpd } virtual_ipaddress { 192.168.200.16/24 dev eth0 } } vim master.sh LOGFIELE=/var/log/keepalived-state.log echo "[Master]" >> $LOGFILE date +"%F %T" >>$LOGFILE vim backup.sh LOGFIELE=/var/log/keepalived-state.log echo "[Backup]" >> $LOGFILE date +"%F %T" >>$LOGFILE vim master.sh LOGFIELE=/var/log/keepalived-state.log echo "[Fault]" >> $LOGFILE date +"%F %T" >>$LOGFILE
將以上文件複製到backup 節點上更改兩個參數, state 更改爲BACKUP ,priority 80即可
參數詳解:
vrrp_instance VI_1 :實例依vrrp_instance作爲表示,後面是實例名稱
state:用於指定keepalived的角色(MASTER or BACKUP)
interface:用於指定HA監測網絡的接口
vritual_router_id:是虛擬路由標識,這個標識是一個數字,同一個實例中的標識唯一併且MASTER和BACKUP標識一致
priority :用於定義節點優先級,數字越大表示優先級越高
advert_int:用於設置MASTER和BACKUP主機之間同步檢查的時間間隔,默認爲s
mcast_src_ip:用於設置發送多播包的地址,如果沒有設置,將用綁定的網卡所對應的IP地址
garp_master_delay:設置在切換到MASTER狀態後延時進行Gratuitous arp請求的時間
nopreempt:設置的是高可用集羣中的不搶佔功能。在一個高可用集羣中,如果主節點死掉,備用節點會成爲主節點,在主節點故
障恢復後會再次搶佔資源,讓資源從現運行的節點上重新迴歸到自己的節點上,如果設置了此項,在主節點故障恢復後,不會再次
搶奪資源,會保持現有運行狀態。直到現有主節點故障後才發生資源轉移。
preemtp_delay:用於設置搶佔的延時時間,單位爲s,此選項主要用在設備系統重啓後網絡需要經過一段時間才能正常工作,這種
情況沒有必要進行主從切換,用於設置這種情況發生的時間間隔,此時間內發生的故障不進行切換
virtual_ipaddress :用來設定在切換時添加或刪除的相關路由條目
track_scrip:調用vrrp_script
killall -0 信號表示對程序的運行狀態進行監控,如果發現進程關閉或其他異常,將返回狀態碼1
關於vrrp_script中的設置參數解釋:
vrrp_script chk_haporxy{
script "killall -0 haproxy"
interval 2
#監測週期
weight -2
# 如果監測失敗當前節點優先級減2
fail 2
#失敗次數,如果請求失敗2次就認爲此節點資源發生故障將進行切換
rise 1
#監測成功就立即成功,如果請求一次成功就默認此節點資源恢復正常
}