參考:https://blog.csdn.net/ljx1528/article/details/82842194
1. 原理
VRRP 協議,全程 Virtual Router Redundancy Protocal,中文名為虛擬路由冗余協議,VRRP 的出現是為了解決靜態路由的單點故障。
VRRP 是用 IP 多播的方式(默認多播地址 224.0.0.18)實現高可用對之間通信的。
工作時,主節點發包,備用節點接包,當備用節點接收不到主節點發的數據包的時候,就啟動接管程序接管主節點的資源。備用節點可以有多個,通過優先級競選,但一般 keepalived 都是使用一對。
2. 配置
略
3. keepalived 產生腦裂的原因與解決方法
腦裂指在一個高可用(HA)系統中,當聯系着的兩個節點斷開聯系時,本來為一個整體的系統,分裂為兩個獨立節點,這時兩個節點開始爭搶共享資源,結果會導致系統混亂,數據損壞。
一般來說,腦裂的發生,有一下幾種原因:
1)高可用服務器對之間心跳線路發生故障,導致無法正常通信
- 因心跳線壞了(包括斷了,老化)
- 因網卡及相關驅動壞了,ip 配置及沖突問題
- 因心跳線連接的設備故障(網卡及交換機)
- 因仲裁的機器出現問題(采用仲裁的方案)
2)高可用服務器上開啟了防火牆阻擋了心跳消息傳輸
3)高可用服務器上心跳網卡地址等信息配置不正確,導致發送心跳失敗
4)其他服務器配置不當等原因,如心跳方式不同,心跳廣插沖突
5)keepalived 配置里同一 VRRP 實例,如果 virtual_router_id 兩端參數配置不一致也會導致裂鬧問題發生
常見的解決方案
1)同時使用串行電纜和以太網電纜連接,同時用兩條心跳線路,這樣一條線路壞了,另一個還是好的,依然能傳送心跳消息
2)當檢測到裂鬧時強行關閉一個心跳節點(這個功能需要特殊設備支持,如果 Stonith、feyce)。相當於備用節點接收不到心跳消息,通過單獨的線路發送關機命令關閉主節點電源
3)做好對裂腦的監控報警(如郵件或手機短信或值班)。在問題發生時人為第一時間介入仲裁,降低損失。