1. 程式人生 > 其它 >keepalived腦裂問題及解決方案

keepalived腦裂問題及解決方案

keepalived腦裂問題及解決方案

1.何為keepalived腦裂

Keepalived的BACKUP主機在收到不MASTER主機報文後就會切換成為master,如果是它們之間的通訊線路出現問題,無法接收到彼此的組播通知,但是兩個節點實際都處於正常工作狀態,這時兩個節點均為master強行繫結虛擬IP,導致不可預料的後果,這就是腦裂。

2.產生原因

1.高可用伺服器對之間心跳線鏈路發生故障,導致無法正常通訊;

2.心跳線線路斷開,老化;

3.網絡卡及相關驅動壞了,ip配置及衝突問題;

4.心跳線間連線的裝置故障;

5.仲裁機器出現問題;

6.其他服務配置不當;

7.vrrp例項名字不一致、優先順序一致;

8.高可用伺服器上開啟了iptables防火牆規則阻擋了心跳訊息傳輸;

9.高可用伺服器上心跳網絡卡地址等資訊配置不正確,導致傳送心跳失敗;

10.Keepalived配置裡同一 VRRP例項如果virtual_router_id兩端引數配置不一致。

3.解決方案

1.當檢測到腦裂時強行關閉一個心跳節點,關閉備用節點的監聽;

2.多節點叢集中,可以通過增加仲裁的機制,確定誰該獲得資源;

3.對腦裂的監控報警,指令碼監測;

檢測思路:正常情況下keepalived的VIP地址是在主節點上的,如果在從節點發現了VIP,就設定報警資訊。指令碼(在從節點上)如下:

vim check.sh
 
#!/bin/bash
 
# 檢查腦裂的指令碼,在備節點上進行部署
LB01_VIP=192.168.100.100 
LB01_IP=192.168.100.11
LB02_IP=192.168.100.12
#通過狀態資訊,過濾結果,並統計 
while true
do
    ping -c 2 -W 3 $LB01_VIP &>/dev/null 
    if [ $? -eq 0 -a `ip add|grep "$LB01_VIP"|wc -l` -eq 1 ];then
        echo "machine is brain."
    else
        echo "machine is ok" 
    fi 
    sleep 5 
done