原文地址:http://blog.51cto.com/13599730/2161622
參考地址:https://blog.csdn.net/qq_14940627/article/details/79998931 防火牆沒有放行keepalived的vrrp協議。
如何放行vrrp:https://www.cnblogs.com/ralphdc/p/7113491.html
https://www.aliyun.com/jiaocheng/137678.html
本人最后將selinux和防火牆關閉了之后,keepalived就不存在兩個master了。
keepalived主備節點都配置vip,vip切換異常案例分析
故障現象:
主機名 | director-A | director-B |
IP | 192.168.14.128 | 192.168.14.131 |
默認主備 | MASTER | BACKUP |
優先級 | 90 | 80 |
VIP為 192.168.14.201
先啟動主節點keepalived服務,后啟動備節點keepalived,發現主備節點都配置了vip。
分析與解決過程:
理應主節點啟動keepalived后發送vrrp廣播報文,備節點啟動keepalived后因為配置同一個廣播域,能收到vrrp廣播報文,從而運行在BACKUP狀態,一直監聽着MASTER發送的vrrp廣播。
首先檢查BACKUP節點message日志,發現keepalived先進入BACKUP狀態(根據keepalived.conf配置,正常行為),但間隔4s后vrrp實例切換為MASTER狀態,這行為不符合正常邏輯。
而備vrrp實例切換為MASTER的原因通常是一定時間內沒有收到MASTER節點發出的vrrp廣播報文,因此在備節點物理網卡上tcpdump抓包可見,主節點192.168.14.128發出的vrrp廣播報文已經到達備節點。這種情況下,keepalived仍認為主節點是down,很可能是OS對物理網卡收到的vrrp廣播報文並未送進內核,keepalived進程無法從捕獲主節點發出的vrrp報文。
因此要檢查Linux防火牆Selinux和iptables規則
跟蹤iptables規則發現,默認的iptables規則僅允許22端口和icmp報文通過
嘗試通過另一個客戶端192.168.14.129訪問備節點80端口,在客戶端就能抓包icmp 通知報文。
此iptables鏈表結構為系統默認配置,該鏈結構太過復雜,且多有iptables鏈為空鏈。因此將多余的iptables規則清理掉,多余的iptables鏈刪除,允許所有報文通過即可。
此時問題已解決,keepalived只有MASTER節點配置vip,且主備節點之間切換vip正常。
不過vip切換的問題雖然解決了,但iptables的遺留問題是在配置文件/etc/sysconfig/iptables中並未配置以上復雜的iptables規則,且重啟系統之后,也仍然會生成以上復雜的iptables規則。修改了/etc/sysconfig/iptables-config配置也在重啟系統后被復原。定是那系統啟動腳本搞得鬼,還得繼續排查。
原文轉載至:
http://blog.51cto.com/13599730/2161622