六、問題
總結:https://www.cnblogs.com/wn1m/p/10919372.html
6.1 keepalive腦裂
腦裂分析:https://www.jianshu.com/p/35941504a2e8
腦裂原因和解決辦法:https://blog.csdn.net/WanJiaBaoBao/article/details/83715748
腦裂(split-brain):指在一個高可用(HA)系統中,當聯繫着的兩個節點斷開聯繫時,本來爲一個整體的系統,分裂爲兩個獨立節點,這時兩個節點開始爭搶共享資源,結果會導致系統混亂,數據損壞。
對於無狀態服務的HA,無所謂腦裂不腦裂;但對有狀態服務(比如MySQL)的HA,必須要嚴格防止腦裂。
原因:
出現這種情況,應該是兩者之前VRRP失效了,有可能backup主機沒有收到master主機的廣播,所以自己去爭搶了master權限。下面在主機上看看廣播情況。
其他原因:
高可用服務器對之間心跳線鏈路發生故障,導致無法正常通信。
因心跳線壞了(包括斷了,老化)。
因網卡及相關驅動壞了,ip配置及衝突問題(網卡直連)。
因心跳線間連接的設備故障(網卡及交換機)。
因仲裁的機器出問題(採用仲裁的方案)。
高可用服務器上開啓了 iptables防火牆阻擋了心跳消息傳輸。
高可用服務器上心跳網卡地址等信息配置不正確,導致發送心跳失敗。
其他服務配置不當等原因,如心跳方式不同,心跳廣插衝突、軟件Bug等。
Keepalived配置裏同一 VRRP實例如果 virtual_router_id兩端參數配置不一致也會導致裂腦問題發生。
解決:
防火牆將vrrp 廣播給過濾掉了,導致backup接受不到master的廣播,然後自己去爭搶了vip、
關掉防火牆
其他解決辦法:
同時使用串行電纜和以太網電纜連接,同時用兩條心跳線路,這樣一條線路壞了,另一個還是好的,依然能傳送心跳消息。
當檢測到裂腦時強行關閉一個心跳節點(這個功能需特殊設備支持,如Stonith、feyce)。相當於備節點接收不到心跳消患,通過單獨的線路發送關機命令關閉主節點的電源。
做好對裂腦的監控報警(如郵件及手機短信等或值班).在問題發生時人爲第一時間介入仲裁,降低損失。例如,百度的監控報警短倍就有上行和下行的區別。報警消息發送到管理員手機上,管理員可以通過手機回覆對應數字或簡單的字符串操作返回給服務器.讓服務器根據指令自動處理相應故障,這樣解決故障的時間更短.
6.2 vrrp原理
https://www.cnblogs.com/ananing/p/12803961.html
爲什麼存在:終端用戶存在被孤立的可能。一旦交換機的三層虛接口故障,局域網用戶就被孤立,不能實現與外部網絡的通信。
虛擬路由器冗餘協議
VRRP(Virtual Router Redundancy Protocol)
VRRP決定哪個路由器是Master,Master路由器負責接收發送至用戶網關的數據包 並進行轉發,以及響應PC對於其網關IP地址的ARP請求。
VRRP的工作過程
- VRRP組中的設備選舉出Master。Master設備通過發送免費ARP報文,將虛擬MAC 地址通知給與它連接的設備或者主機,從而承擔報文轉發任務。
- Master設備週期性向備份組內所有Backup設備發送VRRP通告報文。
- 如果Master設備出現故障,VRRP備份組中的Backup設備重新選舉新的Master。
- VRRP組狀態切換時,Master設備由一臺設備切換爲另外一臺設備,新的Master設 備會立即發送攜帶虛擬路由器的虛擬MAC地址和虛擬IP地址信息的免費ARP報文, 刷新與它連接的主機或設備中的MAC表項,從而把用戶流量引到新的Master設備 上來,整個過程對用戶完全透明。
- 原Master設備故障恢復時,若該設備爲IP地址擁有者(則其優先級爲255),將直 接切換至Master狀態。若該設備優先級小於255,將首先切換至Backup狀態,且其 優先級恢復爲故障前配置的優先級。
- Backup設備的優先級高於Master設備時,由Backup設備的工作方式(搶佔方式和 非搶佔方式)決定是否重新選舉Master。