簡介:
1、在 Keepalived 集群中,其實並沒有嚴格意思上的主、備節點,雖然可以在 keepalived.conf 中定義 state 選項為 MASTER 狀態,
但是這並不意味著此節點就一直是 MASTER 角色。控制節點角色的是 keepalived.conf 中的 priority 值,還有 vrrp_script 模塊中的 weight 值,
這兩個選項對應的是一個整數值,其中 weight 的值可以是正整數,也可以是負整數,一個節點在集群中的角色就是由這兩個值來控制的。
2、在一個一主多備的 Keepalived 集群中,priority 值最大的將成為集群中的 MASTER 角色,其他的都是 BACKUP 角色。
當 MASTER 節點發生故障時,BACKUP 節點之間將進行角色選舉,通過節點優先級 priority 跟 weight 來計算,選出新的 MASTER 節點接管服務。
3、在 vrrp_script 模塊中,如果不設置 weight 值,那麼集群優先級的選擇將由 keepalived.conf 配置文件中的 priority 值決定。
weight 值的設定:
節點 A 、B 組成 Keepalived 集群,A 的 priority 值為 100 ,B 的 priority 值為 80
正常情況下 A 為 MASTER / B 為 BACKUP
現加入資源監控 vrrp_script 模塊來監控 nginx
weight 的值,在正整數的情況下必須大於 20
因為當 A 節點中的 Nginx 無法提供服務時,A 節點的腳本檢測將失敗,返回 1
這時 A 節點的權值將保持 priority 的值 100
而 B 節點的權值將變為 priority + weight 的和,即 80 + weight ,這個和必須大於 100 才會發生主備切換
weight 的兩種情況:
1、正整數時
MASTER 節點 vrrp_script 腳本檢測失敗時,MASTER 節點的 priority 的值小於 BACKUP 節點 priority + weight 的和時,進行主備切換
MASTER 節點 vrrp_script 腳本檢測成功時,MASTER 節點 priority + weight 的值大於 BACKUP 節點 priority + weight 的和時,主節點依然是主節點,不發生切換
2、負整數時
MASTER 節點 vrrp_script 腳本檢測失敗時,MASTER 節點 priority - weight 小於 BACKUP 節點 priority 的值時,進行主備切換
MASTER 節點 vrrp_script 腳本檢測成功時,MASTER 節點 priority 的值大於 BACKUP 節點 priority 的值時,主節點依然是主節點,不發生切換
總結:weight 值的絕對值必須大於 MASTER 節點的 priority - BACKUP 節點的 priority 的差 !
http://xxxxxx/Linuxjc/1138783.html TechArticle