在Linux中,Keepalived的工作原理是什麼?

黄嘉波發表於2024-06-21

Keepalived 是一個在 Linux 系統中廣泛使用的軟體,用於實現高可用性(High Availability, HA)和負載均衡。它的核心工作原理基於 Virtual Router Redundancy Protocol (VRRP) 協議,旨在避免單點故障,確保關鍵服務如 Web 伺服器、資料庫伺服器等的不間斷執行。以下是 Keepalived 工作原理的詳細說明:

1. VRRP 協議基礎
  1. 虛擬路由器 (VRID): Keepalived 使用 VRRP 協議定義一組物理伺服器為一個虛擬路由器,這些伺服器共享一個虛擬 IP 地址(VIP,Virtual IP)。這個虛擬路由器有一個唯一的識別符號,即 VRID。

  2. 角色劃分: 在虛擬路由器組內,伺服器分為兩種角色:Master 和 Backup。Master 負責處理所有發往 VIP 的流量,而 Backup 伺服器則處於待命狀態,準備在 Master 故障時接管服務。

  3. 優先順序機制: 每個伺服器都有一個 VRRP 優先順序,優先順序高的伺服器成為 Master。預設情況下,優先順序可以在配置檔案中設定,範圍是 1 到 255,數值越大優先順序越高。

2. Keepalived 的核心模組
  • Core 模組:負責啟動和維護 Keepalived 程序,載入配置檔案,以及進行基本的系統管理和訊號處理。

  • Check 模組:執行健康檢查,監測本地系統或遠端服務的可用性。例如,檢查網路介面狀態、連線資料庫或HTTP服務是否響應等,這些檢查結果會影響伺服器的 VRRP 優先順序,從而影響 Master 選舉。

  • VRRP 模組:實現了 VRRP 協議,負責 Master 和 Backup 伺服器之間的通訊,以及 Master 故障時的自動切換。Master 會週期性地傳送 VRRP 通告報文(多播到 224.0.0.18),表明自己的活動狀態。Backup 伺服器監聽這些報文,如果沒有收到,會根據優先順序重新選舉新的 Master。

3. 故障切換過程
  1. 正常執行: Master 節點定期傳送 VRRP 通告報文,表明其活性。

  2. 故障檢測: 當 Backup 節點停止接收到 Master 傳送的 VRRP 報文,或透過 Check 模組檢測到 Master 不可用時,會觸發故障切換機制。

  3. 角色切換: Backup 節點根據優先順序確定是否有資格成為新的 Master。如果有更高的優先順序或同等優先順序但IP地址較大(這是VRRP協議中的一個規則),則會接管 VIP,成為新的 Master,開始處理流量。

  4. 服務接管: 新的 Master 會立即開始響應發往 VIP 的請求,確保服務不中斷。

4. 快速切換與穩定性

Keepalived 設計了快速故障檢測和切換機制,確保在 Master 故障後,Backup 能夠在極短時間內(通常小於1秒)接管服務,減少服務中斷時間。同時,透過健康檢查和優先順序管理,保障了系統的穩定性和可靠性。

綜上所述,Keepalived 透過 VRRP 協議和其內部的模組設計,實現了服務的高可用性,確保了即使在伺服器故障的情況下,也能迅速無縫地轉移服務,維持業務連續性。

相關文章