1、腦裂問題
1、定義:
在一個高可用(HA)系統中,當關聯着的兩個結點互相之間斷開通信時,本來為一個獨立的對外提供服務的系統分裂為兩個獨立的結點,這時兩個結點會爭搶資源。(keepAlived 中表現為兩個結點同時擁有VIP)
keepalived 分為主備兩台機器,但對外只提供一個VIP訪問,只有主機down 機VIP 才會漂移到備機提供服務。腦裂會導致主備兩台機器同時擁有VIP出現爭搶問題。
2、原因:
原因是主備機器之間通信斷開,例:
如果啟用了iptables,不設置"系統接收VRRP協議"的規則,就會出現腦裂,備機keepAlived程序接收不到主機的廣播信息,表現為備機上存在VIP。
但是命令抓包時(tcpdump -i eth0|grep VRRP )卻能抓取到主機發過來的VRRP廣播,說明數據入站時 tcpdump 可以在iptables攔截之前抓到數據包之后被iptables攔截,所以keepAlived程序收不到該數據包。
3、解決辦法:
1)為iptables 添加規則限制:
vim /etc/sysconfig/iptables
添加:-A INPUT -s 192.168.244/24 -d 224.0.0.18 -p vrrp -j ACCEPT
2)重啟iptables : service iptables restart
3)備機上VIP 消失,問題解決:
2、一個局域網中多組(keepAlived對) 沖突問題
1、問題描述:
當在同一個局域網部署了多級keepalived服器對時,而又未使用專門的心跳線通信時,可能會發生高可用接管的嚴重故障問題。keepalived 高可用功能是通過VRRP 協議實現的,VRRP 協議默認通過IP 多播的形式實現高可用對之間的通信,如果同一個局域網內存在多組keepalived服務器對,就會造成IP多播地址沖突問題,導致接管錯亂,不同組的keepalived 都會使用默認的224.0.0.18 作為多播地址。
2、問題解決:
在同組的keepalived 服務器所有的配置文件里指定獨一無二的多播地址,配置如下:
global_defs{
router_id LVS_19
vrrp_mcast_group4 224.0.0.19 #這個就是指定多播地址的配置
}
不同實例的通信認證密碼最好不同,以確保接管正常