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發包。問題找到了。
[root@Cent65CTS1037051 ~]# 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