Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
文章目錄
- 一、企業(yè)案例背景
- 二、異常現(xiàn)象
- 三、分析結論+解決思路
- 3.1. 分析結論
- 3.2. 解決思路
- 四、SElinux 處理
- 4.1. 查看SElinux的狀態(tài):
- 4.2. 關閉SElinux
- 五、Firewalld防火墻配置
- 5.1. 開啟vrrp 協(xié)議
- 5.2. 重新啟動防火墻
- 5.3. 查看啟動日志
- 5.4. 虛擬ip驗證
- 5.5. 停止master節(jié)點的keepalived
- 六、Iptables防火墻配置
- 6.1. 配置增加一條防火墻規(guī)則
- 6.2. 防火墻規(guī)則注意事項
一、企業(yè)案例背景
搭建了keepalived 主備集群,master節(jié)點權重100,slave節(jié)點權重是80,按照評測的話,master和slave節(jié)點都啟動keepalived服務后,虛擬vip正常應該在master節(jié)點,slave節(jié)點不顯示虛擬vip;當master節(jié)點的keepalived服務宕機后,虛擬vip會漂移到slave節(jié)點上,繼續(xù)提供keepalived服務后服務。
二、異常現(xiàn)象
但是master和slave節(jié)點都出現(xiàn)了虛擬vip,這種現(xiàn)象和咱們預估的結果不一樣。但是關閉防火墻后和咱們預估的結果一樣,說明和防火墻有關。
三、分析結論+解決思路
3.1. 分析結論
通過不停的查找問題,我發(fā)現(xiàn),只需要關閉備用負載均衡器的防火墻,那么主備服務器都有VIP的情況就會得以解決。由此可以肯定,問題就是出現(xiàn)在了防火墻這里。
首先用tcpdump查看一下vrrp的組播情況,這個隨便在同網(wǎng)絡的任意一臺服務器抓包即可:
查看下抓包的結果:
由上圖可以看到,192.168.0.114和192.168.0.112兩個IP在輪流發(fā)送組播信號。而正常的應該是由MASTER服務器發(fā)送組播,如果BACKUP收不到MASTER的組播信號了,那么判定MASTER宕機了,BACKUP就會接手VIP。
3.2. 解決思路
如果關閉防火墻,keepalived問題解決了,那么問題就簡單了,我們只需要讓VRRP組播其通過防火墻即可。
四、SElinux 處理
4.1. 查看SElinux的狀態(tài):
getenforce可能的結果有三個:
Enforcing #強制開啟Permissive #寬容模式Disabled #關閉4.2. 關閉SElinux
#編輯config sudo vim /etc/selinux/config #2.把下面2行注釋掉 #SELINUX=enforcing #SELINUXTYPE=targeted #3.添加一行配置 SELINUX=disabled :wq! #保存退出 setenforce 0 #使配置立即生效五、Firewalld防火墻配置
centos 防火墻有兩種管理方式firewall, iptables兩者不能同時開啟
適用于centos7.x系統(tǒng)
5.1. 開啟vrrp 協(xié)議
主備都運行下面的命令
sudo firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --protocol vrrp -j ACCEPT5.2. 重新啟動防火墻
firewall-cmd --reload5.3. 查看啟動日志
master節(jié)點
slave節(jié)點
從上面截圖中可以看出,由于 with higher priority 100, ours 80很明顯114權重比112的權重大,虛擬vip在192.168.0.114上。
5.4. 虛擬ip驗證
master節(jié)點
slave節(jié)點
5.5. 停止master節(jié)點的keepalived
master節(jié)點
slave節(jié)點
六、Iptables防火墻配置
適用于centos6.x系統(tǒng)
我們只需要在防火墻中增加一條規(guī)則即可:
6.1. 配置增加一條防火墻規(guī)則
-A INPUT -p vrrp -j ACCEPT6.2. 防火墻規(guī)則注意事項
但是這里有個坑,默認的防火墻中基本是如下配置:
# 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-prohibited COMMIT添加規(guī)則一定不要在
-A INPUT -j REJECT --reject-with icmp-host-prohibited
之后,一定要加在其前面。
這時候重啟防火墻后查看BACKUP的ip,就會發(fā)現(xiàn)VIP已經(jīng)不在了。
再關閉一下MASTER的keepalived,并打開BACKUP的日志,就可以看到正確的內(nèi)容
總結
以上是生活随笔為你收集整理的Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Schema整合Quart
- 下一篇: json处理最外层引号