1. 程式人生 > >LVS+Keepalived時主備負載均衡器都有VIP的問題

LVS+Keepalived時主備負載均衡器都有VIP的問題

先森在模擬搭建LVS+Keepalived的環境,LVS是做負載均衡的,Keepalived是做高可用的。在搭建好之後,先森遇到了一個奇怪的問題,兩個負載均衡器MASTER和BACKUP都搶佔到了VIP。不過還好的是,實際上同一時間內只有一個VIP在起作用。下面就來談談先森的解決過程。

解決過程

通過不停的查詢問題,我發現,只需要關閉備用負載均衡器的防火牆,那麼主備伺服器都有VIP的情況就會得以解決。由此可以肯定,問題就是出現在了防火牆這裡。

首先用tcpdump檢視一下vrrp的組播情況,這個隨便在同網路的任意一臺伺服器抓包即可:

1tcpdump vrrp -n    # -n:不把主機的網路地址轉換成名字

檢視下抓包的結果:

QQ圖片20160830121808.png -1

tcpdump抓包

由上圖可以看到,192.168.2.79和192.168.2.53兩個IP在輪流傳送組播訊號。而正常的應該是由MASTER伺服器傳送組播,如果BACKUP收不到MASTER的組播訊號了,那麼判定MASTER宕機了,BACKUP就會接手VIP。

2016年12月01日更新

SElinux

首先,先確定伺服器的SElinux是否設定為關閉。一般都是將其關閉的,在CentOS先森嘗試了啟用,但是也沒有firewall-cmd這個命令,無法新增埠,所以還是將其關閉吧。

檢視SElinux的狀態:

1getenforce

可能的結果有三個:

123Enforcing         #強制開啟
Permissive        #寬容模式Disabled          #關閉

如果是Enforcing強制模式,就需要關閉:

1setenforce 0    #設定為寬容模式

但這樣只在本次生效,重啟伺服器後將失效。如果要永久關閉,還需要修改配置檔案:

1sed -i 's/=enforcing/=disabled/g' /etc/sysconfig/selinux

iptables防火牆

如果將SElinux關閉問題依舊存在,則可能是防火牆將MASTER的VRRP組播給擋住了。首先將防火牆關閉,確定防火牆是否為罪魁禍首。

1service iptables stop

如果關閉防火牆,keepalived問題解決了,那麼問題就簡單了,我們只需要讓VRRP組播其通過防火牆即可。

我們只需要在防火牆中增加一條規則即可:

1-A INPUT -p vrrp -j ACCEPT

但是這裡有個坑,預設的防火牆中基本是如下配置:

12345678910111213# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT-A INPUT -p icmp -j ACCEPT-A INPUT -i lo -j ACCEPT-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A INPUT -j REJECT --reject-with icmp-host-prohibited-A FORWARD -j REJECT --reject-with icmp-host-prohibitedCOMMIT

新增規則一定不要在

1-A INPUT -j REJECT --reject-with icmp-host-prohibited

之後,一定要加在其前面。

QQ圖片20160830122443.png -2

防火牆配置

這時候重啟防火牆後檢視BACKUP的ip,就會發現VIP已經不在了。

再關閉一下MASTER的keepalived,並開啟BACKUP的日誌,就可以看到正確的內容:

1tail -f /var/log/messages

QQ圖片20160830122539.png -3

Keepalived切換VIP

總結

如果不是防火牆的原因,那麼久應該仔細檢視配置檔案中的vrrp_sync_group中設定的VRRP組等設定是否相同,當然還有其他的可能性,但大多都是VRRP組播訊號的問題。

在解決問題的過程中,排除法無疑是最簡單粗暴定位問題的方法,要靈活運用。