什麼是負載均衡器#
負載均衡器(Load Balancer, LB) 是分散式系統中的關鍵元件,主要功能包括:
- 依據特定策略(隨機、輪詢(Round-Robin)、依記憶體或 CPU 使用率加權隨機等)將流量分配至多個伺服器
- 持續追蹤所有後端資源的狀態
- 當某台伺服器無法處理新請求、無回應或錯誤率升高時,LB 會自動停止將流量導向該伺服器
負載均衡器的核心價值在於:分散流量、提高可用性、並自動隔離故障節點。
負載均衡器的放置位置#
為了充分發揮系統的可擴展性(Scalability) 與冗餘性(Redundancy),可以在系統的每一層進行負載均衡。LB 可部署於以下三個位置:
- 使用者與網頁伺服器之間
- 網頁伺服器與內部平台層之間(如應用伺服器或快取伺服器)
- 內部平台層與資料庫之間

圖 1.1:Load Balancer 三層架構圖
負載均衡的實作方式#
實作負載均衡有多種方式,以下介紹三種常見的做法。
智慧客戶端(Smart Clients)#
智慧客戶端會維護一個服務主機池(Pool),並在這些主機之間進行負載均衡。其特點包括:
- 偵測無回應的主機,避免將請求送往這些節點
- 偵測已恢復的主機,重新加入服務池
- 處理新增主機等動態變化
將負載均衡功能內建於資料庫客戶端(快取、服務等)中,對開發者而言是一個直覺的做法——在系統規模較小時容易實作與管理。但隨著系統成長,LB 需要演進為獨立的伺服器。
硬體負載均衡器(Hardware Load Balancers)#
硬體負載均衡器(如 Citrix NetScaler)是效能最高但也最昂貴的方案:
- 能解決非常廣泛的負載均衡問題
- 價格極為昂貴,且設定並不簡單
即使是預算充裕的大型公司,也通常不會在所有場景都使用硬體負載均衡器。常見做法是:僅在使用者請求進入基礎設施的第一個接觸點使用硬體方案,內部網路的流量分配則改用智慧客戶端或混合方案。
軟體負載均衡器(Software Load Balancers)#
軟體負載均衡器是介於智慧客戶端與硬體方案之間的混合式做法,兼顧了靈活性與成本效益。
以知名的開源軟體 HAProxy 為例:
- 可部署於客戶端與伺服器之間,或伺服器層與伺服器層之間
- 若能控制客戶端所在的機器,HAProxy 可直接運行在同一台機器上,透過本地端口(例如
localhost:9000)接收請求後轉發至後端服務 - 若無法管理客戶端機器,則可將 HAProxy 運行在中介伺服器上
- HAProxy 會自動進行健康檢查(Health Check),動態地從服務池中移除或加入機器
- 將請求均勻分配至服務池中的所有機器
對大多數系統而言,建議從軟體負載均衡器開始,待需求增長後再視情況遷移至智慧客戶端或硬體負載均衡方案。