業務量爆發式增長,單一設備無法負荷。負載平衡 (Load Balancing) 在既有網路架構上,以低成本擴展頻寬、提升吞吐量、強化處理能力、改善可用性,核心任務:解決擁塞、就近服務、地理位置透明、提升存取品質、加速回應、提高資源利用率、消除單點故障。
「負載平衡」實為「負載分擔」。靜態平衡 = 輪流值日 (預設策略);動態平衡 = 即時分析流量狀態智慧分派。架構分:本地負載平衡 (單一機房叢集) 與 全域負載平衡 (跨地域/網路多叢集)。
客戶端安裝代理程式,定期收集伺服器 CPU、磁碟、記憶體等動態指標,依策略選擇最佳節點。透明於應用層,屬動態平衡。
缺點:通用性差,每個客戶端需部署代理;應用程式需修改 (動態連結庫/嵌入式) 以重導請求。僅適用特定分散式計算場景或 Java 架構 (虛擬機層插入中介層)。
將平衡邏輯下沉至中介層 (三層架構)。反向 Proxy 將請求均勻轉發多台後端伺服器,或直接回應快取內容 (加速靜態頁)。
優點:結合快取技術提升效能;缺點:每種服務需專屬 Proxy 開發成本高;高併發下 Proxy 自身成瓶頸 (雙連接維護);單點故障風險。
同一域名對應多 IP,DNS 輪詢回應不同 IP。早期 Yahoo、163 採用。Bind 8.2+ 支援,部署簡單。
缺陷:(1) DNS 無法感知節點存活,故障 IP 仍被解析;(2) TTL 機制導致快取不一致,TTL 太短增 DNS 流量,太長延遲故障切換;(3) 無法區分節點效能差異與當前負載,單純輪詢易導致負載不均。
檢查 HTTP 標頭 (URL、Cookie、User-Agent 等) 依內容策略分派:圖片請求導向圖片伺服器、資料庫查詢導向高效能 DB 伺服器、依 Cookie 識別 VIP 用戶導向專屬叢集。
HTTP 運行於 TCP 連接最上層,負載平衡器需建立 TCP 連接、解析 HTTP 標頭後才能決策。高併發下 TCP 連接建立、標頭解析、決策延遲成為效能關鍵。
大型網路整合防火牆、路由器、L3/L4 交換器、負載平衡器、快取伺服器、Web 伺服器。L4 交換器對外呈現單一虛擬 IP (VIP),依 TCP/UDP 連接埠號與演算法 (最少連接、加權輪詢等) 動態將封包轉發至內部真實 IP (RIP)。
特點:無需解析應用層協定,效能極高,延遲極低;但無法進行內容感知決策 (如 URL、Cookie)。
| 場景 | 推薦技術 | 理由 |
|---|---|---|
| 簡單 Web 叢集、預算有限 | DNS Round-Robin + 健康檢查腳本 | 零成本,配合監控腳本動態更新 DNS 可緩解故障感知問題 |
| 企業級 Web 應用、需內容路由 | L7 內容交換器 (F5 BIG-IP, Citrix NetScaler, A10 等) | 支援 URL/Cookie/SSL Offload/壓縮/快取,功能最完整 |
| 超高併發、極致效能、無內容路由需求 | L4 交換器 + 後端叢集 | 單封包轉發延遲微秒級,吞吐量達百萬級連接 |
| 跨地域多機房 | 全域負載平衡 (GTM) + 各站 L4/L7 | 依地理位置、健康狀態、負載導向最佳站點 |
負載平衡非單一技術,而是從 L4 到 L7、從本地到全域的組合技。架構師需依業務特性、流量模式、預算、運維能力,設計分層負載平衡體系。