1. 程式人生 > >Keepalived兩節點出現雙VIP情況及解決方法【原創】

Keepalived兩節點出現雙VIP情況及解決方法【原創】

1、故障現象

倆臺伺服器keepalived的vip在倆臺伺服器同時出現

A:10.70.12.72

B:10.70.12.73

 

2、問題分析

1)、先分析那臺伺服器在提供服務

A:10.70.12.72

B:10.70.12.73

可以看到是B機器72在對外提供lvs轉發服務

2)、檢視倆臺伺服器的keepalived日誌

 發現倆臺的日誌都是判斷自己是master狀態,證明倆者之間沒有通過vrrp通訊,來得到對方的狀態資訊

檢視倆臺伺服器防火牆,發現B的防火牆沒有關閉。關閉後發現keepalived日誌報錯如下

Nov  8 09:32
:49 Cent65CTS1037061 Keepalived_vrrp: bogus VRRP packet received on eth0 !!! Nov 8 09:32:49 Cent65CTS1037061 Keepalived_vrrp: VRRP_Instance(VI_1) Dropping received VRRP packet... Nov 8 09:32:50 Cent65CTS1037061 Keepalived_vrrp: ip address associated with VRID not present in received packet : 10.70.12.20 Nov
8 09:32:50 Cent65CTS1037061 Keepalived_vrrp: one or more VIP associated with VRID mismatch actual MASTER advert

百度一下發現可能是VRID和別的機器相同導致的,進一步驗證一下,如下

在A伺服器上抓包,發現好多VRID是51的IP在對vrrp發包。問題找到了。

[[email protected] ~]# tcpdump -i eth0 vrrp -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link
-type EN10MB (Ethernet), capture size 65535 bytes 09:32:24.556954 IP 10.70.12.211 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:32:24.586937 IP 10.70.12.93 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 1, authtype simple, intvl 1s, length 20
09:32:24.637709 IP 10.70.12.237 > 224.0.0.18: VRRPv2, Advertisement, vrid 53, prio 150, authtype simple, intvl 1s, length 20
09:32:24.639037 IP 10.70.12.117 > 224.0.0.18: VRRPv2, Advertisement, vrid 14, prio 100, authtype simple, intvl 1s, length 20
09:32:24.641544 IP 10.70.12.202 > 224.0.0.18: VRRPv2, Advertisement, vrid 31, prio 102, authtype simple, intvl 1s, length 20
09:32:25.259017 IP 10.70.12.89 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 1, authtype simple, intvl 1s, length 20
09:32:25.557094 IP 10.70.12.211 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 100, authtype simple, intvl 1s, length 20
09:32:25.588104 IP 10.70.12.93 > 224.0.0.18: VRRPv2, Advertisement, vrid 51, prio 1, authtype simple, intvl 1s, length 20  

第一,為B防火牆沒有關閉,導致A和B之間不能通訊,都判斷自己為master繫結vip

第二,keepalived的vrid與別人的相同,並且密碼還都是一樣的導致,keepalived報錯

 

3、解決方法

第一、伺服器都要關閉防火牆,不關閉就要增加vrrp策略

 -A INPUT -p vrrp -j ACCEPT

 第二、keepalived的vrid設定的不同,且最後修改密碼

    virtual_router_id 82
    authentication {
        auth_type PASS
        auth_pass 2111
     }

 

參考

Keepalived兩節點出現雙VIP情況及解決方法_伺服器應用_Linux公社-Linux系統入口網站 https://www.linuxidc.com/Linux/2017-10/147537.htm