什麼是負載均衡器#

負載均衡器(Load Balancer, LB) 是分散式系統中的關鍵元件,主要功能包括:

  • 依據特定策略(隨機、輪詢(Round-Robin)、依記憶體或 CPU 使用率加權隨機等)將流量分配至多個伺服器
  • 持續追蹤所有後端資源的狀態
  • 當某台伺服器無法處理新請求、無回應或錯誤率升高時,LB 會自動停止將流量導向該伺服器

負載均衡器的核心價值在於:分散流量、提高可用性、並自動隔離故障節點。

負載均衡器的放置位置#

為了充分發揮系統的可擴展性(Scalability)冗餘性(Redundancy),可以在系統的每一層進行負載均衡。LB 可部署於以下三個位置:

  1. 使用者與網頁伺服器之間
  2. 網頁伺服器與內部平台層之間(如應用伺服器或快取伺服器)
  3. 內部平台層與資料庫之間

圖 1.1:Load Balancer 三層架構圖

負載均衡的實作方式#

實作負載均衡有多種方式,以下介紹三種常見的做法。

智慧客戶端(Smart Clients)#

智慧客戶端會維護一個服務主機池(Pool),並在這些主機之間進行負載均衡。其特點包括:

  • 偵測無回應的主機,避免將請求送往這些節點
  • 偵測已恢復的主機,重新加入服務池
  • 處理新增主機等動態變化

將負載均衡功能內建於資料庫客戶端(快取、服務等)中,對開發者而言是一個直覺的做法——在系統規模較小時容易實作與管理。但隨著系統成長,LB 需要演進為獨立的伺服器

硬體負載均衡器(Hardware Load Balancers)#

硬體負載均衡器(如 Citrix NetScaler)是效能最高但也最昂貴的方案:

  • 能解決非常廣泛的負載均衡問題
  • 價格極為昂貴,且設定並不簡單

即使是預算充裕的大型公司,也通常不會在所有場景都使用硬體負載均衡器。常見做法是:僅在使用者請求進入基礎設施的第一個接觸點使用硬體方案,內部網路的流量分配則改用智慧客戶端或混合方案。

軟體負載均衡器(Software Load Balancers)#

軟體負載均衡器是介於智慧客戶端與硬體方案之間的混合式做法,兼顧了靈活性與成本效益。

以知名的開源軟體 HAProxy 為例:

  • 可部署於客戶端與伺服器之間,或伺服器層與伺服器層之間
  • 若能控制客戶端所在的機器,HAProxy 可直接運行在同一台機器上,透過本地端口(例如 localhost:9000)接收請求後轉發至後端服務
  • 若無法管理客戶端機器,則可將 HAProxy 運行在中介伺服器
  • HAProxy 會自動進行健康檢查(Health Check),動態地從服務池中移除或加入機器
  • 將請求均勻分配至服務池中的所有機器

對大多數系統而言,建議從軟體負載均衡器開始,待需求增長後再視情況遷移至智慧客戶端或硬體負載均衡方案。