紀錄工作經驗、相關知識,解決技術相關問題。

工作雜談, 網站相關, 資訊相關

HA 是什麼?高可用性系統架構與故障切換設計實務

什麼是 HA?高可用性系統架構設計與關鍵組成解析 特色圖片

高可用性(High Availability,HA)指的是系統設計和實施的一種能力,以確保系統或服務在長時間內能夠持續運行,並且在出現故障或異常情況下能夠迅速恢復,最大限度地減少停機時間。高可用性系統對於關鍵業務應用、金融服務、雲端基礎設施等領域尤為重要。

⚡ 快速導覽(Table of Contents)

系統可用性 SLA 與停機時間量化對照

在探討高可用性系統架構時,業界標準必然會提及服務等級協議(SLA)與可用性百分比(即俗稱的「幾個 9」)。可用性百分比直接對應到每年允許的非計畫性停機時間,這是評估系統架構設計成本與業務需求的關鍵指標。

可用性百分比 (SLA)每年允許停機時間每月允許停機時間每日允許停機時間適用業務場景
99.9% (三個 9)約 8.76 小時約 43.8 分鐘約 1.44 分鐘一般企業內部系統、非核心部落格
99.99% (四個 9)約 52.6 分鐘約 4.38 分鐘約 8.64 秒電子商務平台、SaaS 企業服務
99.999% (五個 9)約 5.26 分鐘約 25.9 秒約 0.86 秒金融交易系統、電信核心、醫療設備

從上述對照表可以看出,從三個 9 提升到五個 9,架構設計的複雜度與硬體成本呈等比級數上升。要達到五個 9 的高標準,單靠單一機房的備援已無法滿足要求,必須導入跨區域的多資料中心雙活或多活架構。

高可用性的關鍵組成部分

  1. 冗餘設計:
    硬體冗餘:使用多台主機、網路交換器和儲存設備來確保即使某些設備出現故障,系統依然可以正常運行。
    資料冗餘:透過資料庫的多重備份和資料同步來防止資料遺失和損壞。例如,使用 RAID 配置來保護資料儲存,或者在多個地理位置進行異地資料備份。
  2. 故障切換(Failover):
    系統應能夠自動檢測到硬體或軟體的故障,並迅速切換到備用系統或設備,確保服務不中斷。例如,使用熱備份伺服器在主伺服器出現故障時立即接管其工作。
  3. 負載均衡(Load Balancing):
    將請求分配到多台伺服器,以減少單點故障的風險並提升回應速度。負載均衡器可以動態調整流量,確保每台伺服器都能有效處理分配到的工作負荷。
  4. 監控和報警:
    持續監控系統狀態,及時發現並回應異常情況。使用監控工具來追蹤系統效能指標,如 CPU 使用率、記憶體使用率和網路流量,並在出現異常時發送報警通知。
高可用性架構之硬體與資料冗餘模組拆解
圖:高可用性架構之硬體與資料冗餘模組拆解

Active-Passive 與 Active-Active 架構差異與腦裂防範

在實作故障切換與冗餘時,主要會採用兩種經典的架構模式:主動/被動(Active-Passive)與主動/主動(Active-Active)。理解這兩者的差異以及伴隨而來的風險,是確保系統穩定運作的核心。

1. Active-Passive(主動/被動模式)

  • 運作機制:系統中包含一個主節點(Active)負責處理所有即時讀寫請求,以及一個或多個被動節點(Passive / Standby)處於待命狀態。主節點透過心跳線(Heartbeat)定期向被動節點發送訊號。
Active-Passive 運行架構與資料流向
圖:Active-Passive 運行架構與資料流向
  • 優缺點:架構相對簡單,資料一致性容易維護;但在發生故障切換的空檔期,會產生短暫的服務中斷,且被動節點在平時處於閒置狀態,硬體資源利用率較低。

2. Active-Active(主動/主動模式)

  • 運作機制:多個節點同時處於運行狀態,共同分擔客戶端發送的請求與工作負載。
Active-Active 系統的負載分流與請求處理資料流
圖:Active-Active 系統的負載分流與請求處理資料流
  • 優缺點:硬體資源利用率高、吞吐量大;但相對地,資料同步的複雜度極高,必須解決分散式鎖定、資料衝突與寫入順序一致性等難題。

3. 雙節點叢集的「腦裂(Split-Brain)」風險與防範

在建置雙節點的高可用性叢集時,最致命的架構盲點之一便是「腦裂(Split-Brain)」。

  • 成因:當主節點與被動節點之間的心跳線網路突然斷開,但兩者本身仍然正常運行時,被動節點會誤以為主節點已掛掉,因而強行升格為新的主節點。此時,網路兩端的客戶端若分別向兩個主節點寫入不同的資料,就會導致資料嚴重損壞與分裂。
  • 防範方式:
    建置獨立心跳線:配置兩條以上獨立的實體網路或序列埠心跳線,避免單一網路中斷造成誤判。
    引入仲裁機制(Quorum / Arbiter):在雙節點之外引入第三方的仲裁節點或共用儲存設備鎖(SCSI Reservation),規定必須取得過半數節點的同意才能升格為主節點,從根本上杜絕腦裂發生的可能。

高可用性實施策略

  1. 設計冗餘系統架構:
    設計時全面評估單點故障(Single Point of Failure, SPOF),確保所有關鍵元件從網路、運算到儲存都有對應的備份。
  2. 實施資料備份和恢復計畫:
    定期進行資料備份,並執行還原演練,確保在發生嚴重災難時能夠快速恢復資料。
  3. 部署負載均衡器:
    使用硬體或軟體負載均衡器來分配流量,並搭配健康檢查(Health Check)機制自動隔離故障節點。
  4. 建立自動化故障切換機制:
    實施自動化的故障切換機制,並結合完善的逾時與重試策略,確保在出現故障時能夠無縫切換到備用系統。
  5. 持續監控和維護:
    使用監控工具來即時追蹤系統健康狀態,並進行定期維護和架構壓力測試。

高可用性的應用場景

  1. 電子商務平台:
    任何停機都會導致直接營收損失和使用者體驗的下降,因此需要高可用性來確保平台持續運行。
  2. 金融服務:
    金融交易與清算系統需要保證極高的可用性標準,以支援跨國、跨時區的即時交易活動。
  3. 雲端服務:
    雲端運算提供商需要確保其基礎設施的高可用性,為企業客戶提供穩定的運算與儲存資源。
  4. 醫療系統:
    醫療資訊系統需要高可用性來確保病患歷程與即時醫療服務的持續可用,避免任何中斷帶來的生命安全風險。

結論

高可用性是現代 IT 基礎設施設計中的核心目標。透過實施冗餘設計、故障切換、負載均衡、防範腦裂風險以及持續的系統監控,可以顯著提高系統的穩定性和可靠性,確保關鍵業務系統在各種突發情況下都能維持正常運行。

參考資料與延伸閱讀

發表迴響