當單一伺服器無法滿足高並發網路服務需求時,Windows Server 2003 內建的 網路負載平衡 (NLB, Network Load Balancing) 可將流量分散至最多 32 台主機,提供高可用性與擴展性。本文詳細記錄雙節點 NLB 叢集規劃、安裝、配置與驗證全流程。
NLB 核心優勢
- 擴展性: 最多 32 節點共同分擔流量,線性擴展處理能力。
- 高可用性: 節點失敗自動偵測 (心跳),流量秒級重新分發,服務不中斷。
- 單一進入點: 對外僅發佈一個虛擬 IP (VIP) 與 DNS 名稱 (如
cluster.corp.contoso.com),用戶端無感知。
- 低成本: 可在標準版 Windows、商用伺服器硬體上運行,無需專用負載平衡器硬體。
- 支援應用: IIS、ISA Server、VPN、終端機服務、Windows Media Services 等 TCP/IP 服務。
實驗環境規劃
| 項目 | 節點 1 | 節點 2 | 叢集 (虛擬) |
| 電腦名稱 | W2003-1 | W2003-2 | CBF001 |
| 專用 IP | 202.206.197.190 | 202.206.197.191 | - |
| 叢集 VIP | - | 202.206.197.195 |
| 完整網域名稱 | w2003-1.corp.contoso.com | w2003-2.corp.contoso.com | cbf001.corp.contoso.com |
| 網卡模式 | 單網卡多播/單播模式 (生產建議雙網卡:心跳專用 + 服務共用) |
DNS 解析設定
- DNS 區域新增 A 記錄:
cbf001.corp.contoso.com → 202.206.197.195。
- 無 DNS 環境可修改用戶端
C:\Windows\System32\drivers\etc\hosts:
202.206.197.195 cbf001.corp.contoso.com
NLB 叢集安裝與配置步驟
1. 安裝 NLB 元件 (兩節點皆執行)
- 控制台 → 新增/移除程式 → 新增/移除 Windows 元件。
- 勾選 網路負載平衡 → 下一步完成安裝。
2. 配置第一個節點 (W2003-1)
- 開啟 網路負載平衡管理員 (
nlbmgr)。
- 叢集 功能表 → 新增 → 新增叢集。
- 叢集參數:
- IP 位址:
202.206.197.195、子網路遮罩:255.255.255.0。
- 完整網際網路名稱:
cbf001.corp.contoso.com。
- 叢集操作模式:單播 (Unicast) 或 多播 (Multicast)。
單播:叢集 MAC 取代實體 MAC,需交換器支援靜態 MAC 綁定或 ARP 靜態項目。
多播:保留實體 MAC,使用多播 MAC,相容性較好但需交換器開啟 IGMP Snooping。
- 主機參數:
- 優先權 (Host Priority):
1 (最低數值 = 最高優先權,處理預設主機流量)。
- 專用 IP 位址:
202.206.197.190。
- 初始主機狀態:已啟動。
- 連接埠規則 (Port Rules): 預設為「所有連接埠、TCP、單一主機 (Single)」。
依應用調整:
- 單一主機:特定連接埠僅由最高優先權節點處理 (如 SSL 會話親和性)。
- 多重主機:流量雜湊分散至所有節點 (無狀態服務,如 HTTP 80/443)。
- 停用此連接埠範圍:封鎖特定埠。
- 完成精靈,叢集建立完成,節點狀態顯示「已聚合」。
3. 加入第二個節點 (W2003-2)
- 在 NLB 管理員中,右鍵叢集 → 新增主機到叢集。
- 連接至 W2003-2,輸入專用 IP
202.206.197.191。
- 主機優先權:
2 (次優先)。
- 初始狀態:已啟動。
- 完成,兩節點狀態皆為「已聚合」。
驗證與測試
- Ping VIP:
ping cbf001.corp.contoso.com → 回應 VIP。
- Web 服務測試: 瀏覽器存取
https://cbf001.corp.contoso.com,多次重新整理,查看 IIS 日誌確認請求分散至兩節點 (可在頁面顯示 <%= Request.ServerVariables("LOCAL_ADDR") %> 驗證)。
- 故障轉移測試: 關閉 W2003-1 網路或停止 NLB 服務 (
net stop nlb),確認流量自動轉移至 W2003-2,服務無中斷。
- NLB 管理員監控: 即時查看各節點狀態、連線數、封包統計。
常見問題與排查
- 節點狀態「已聚合」但流量不均衡
- 檢查連接埠規則是否設為「多重主機」;確認應用層無 Session 親和性需求 (如 ASP.NET Session 須設定 StateServer/SQLServer 模式或啟用 NLB 親和性「單一主機」/「網路親和性」)。
- 單播模式下交換器學習不到叢集 MAC
- 在交換器配置靜態 MAC 位址表項目,將叢集多播 MAC 映射到叢集連接埠群組;或改用多播模式並開啟 IGMP Snooping。
- 心跳網路阻塞導致誤判節點失效
- 生產環境強烈建議雙網卡:一張服務網卡 (VIP)、一張專用心跳網卡 (私有網段,不通往外部),NLB 設定心跳專用介面卡。
- NLB 事件記錄事件 ID 1007/1008 (節點聚合/解聚)
- 正常現象,若頻繁發生檢查網路穩定性、心跳間隔設定 (預設 1 秒,可調整登錄檔
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WLBS\Parameters\Interface\{GUID}\HeartbeatPeriod)。
進階主題:NLB + 終端機服務 / VPN / ISA Server
- 終端機服務 NLB: 需搭配 會話目錄 (Session Directory) (Server 2003) 或 遠端桌面連線代理器 (Server 2008 R2+),將使用者會話狀態外部化至資料庫,實現真正的會話故障轉移。
- VPN NLB: 適用於 PPTP/L2TP/IPsec 連線分散,需注意 IPsec NAT-T 與 NLB 多播/單播模式相容性。
- ISA Server / TMG NLB: 企業版功能,提供陣列模式與 NLB 整合,含快取同步、規則同步。
結語
Windows Server 2003 NLB 為無共享儲存架構的叢集方案,適合無狀態 TCP 服務 (Web、VPN、媒體串流)。有狀態服務 (資料庫、Exchange、檔案伺服器) 需改用 伺服器叢集 (MSCS/WSFC) 共享儲存架構。注意:Server 2003 已停止支援,新部署請使用 Windows Server 2016/2019/2022 內建 NLB 或 Azure Load Balancer / AWS ALB / 硬體負載平衡器。