Windows Server 2003 內建網路負載平衡 (NLB) 功能,可在無硬體負載平衡器情況下,將多台伺服器組成叢集,提供高可用性與擴展性。本文記錄雙節點、單網卡、多播模式部署完整流程與關鍵避坑點。
環境需求
- 兩台伺服器:Server A (192.168.0.2)、Server B (192.168.0.3),皆為 Windows Server 2003 SP2,單網卡。
- 叢集虛擬 IP (VIP):
192.168.0.5,供客戶端存取。
- 兩台伺服器本地 Administrator 帳號/密碼完全一致(NLB 節點間驗證需求)。
部署流程
步驟 1:在 Server A 建立新叢集
- 控制台 → 管理工具 → 網路負載平衡管理器 (nlbmgr.exe)。
- 右鍵「網路負載平衡叢集」 → 「新增叢集」。
- 「叢集參數」:IP 位址輸入
192.168.0.5,子網路遮罩自動帶入,完整網際網路名稱可填叢集 FQDN(選填)。
- 叢集操作模式:選擇「多播」 (Multicast)。
關鍵: 單播模式需雙網卡或網路裝置支援 MAC 位址覆寫,單網卡環境必須選多播,否則無法加入第二節點。
- 「連接埠規則」:預設 80/443 全埠規則 → 篩選模式 「多重主機」 (Multiple Hosts) → 親和性 「無」 (None) → 確定。
親和性「無」:請求可分散至任一節點,單節點故障自動轉向他節點;「單一」會導致斷線請求無法自動轉移。
- 完成精靈,叢集狀態顯示「已聚合」。
步驟 2:在 Server B 加入現有叢集
- 開啟 NLB 管理器 → 「連線到現有叢集」 → 輸入 Server A IP (
192.168.0.2)。
- 若提示「無法連線主機」/「找不到叢集」/要求認證失敗:
— 確認雙向 Ping 通、防火牆允許 NLB 控制流量 (TCP 1717, 1718, 1719, 2504 等)。
— 參考微軟 KB 修改註冊表 HKLM\SYSTEM\CurrentControlSet\Services\WLBS\Parameters\Interface\{GUID}\ClusterMode 或停用驗證(測試環境)。
- 連線成功後,右鍵叢集 → 「新增主機到叢集」 → 輸入 Server B 自身 IP (
192.168.0.3) → 完成。
步驟 3:在 Server A 將 Server B 正式加入
- 切回 Server A NLB 管理器 → 右鍵叢集 → 「新增主機到叢集」 → 輸入 Server B IP (
192.168.0.3) → 完成。
步驟 4:在 Server B 確認自身已加入
- Server B NLB 管理器 → 右鍵叢集 → 「新增主機到叢集」 → 輸入自身 IP (
192.168.0.3) → 完成。
- 稍待片刻,兩節點狀態均顯示 「已聚合」 (Converged)。
服務綁定與測試
- 兩台伺服器 IIS 網站設定:IP 位址選擇叢集 VIP (192.168.0.5),而非自身實體 IP。
- 建立測試頁面:
Server A: Default.htm 內容「Server A Active」
Server B: Default.htm 內容「Server B Active」
- 客戶端瀏覽器訪問
https://192.168.0.5/,觀察輪流顯示 A/B 內容(親和性「無」時)。
- 關閉 Server A IIS 或拔網路線 → 重新整理 → 應只顯示 Server B 內容,驗證故障轉移。
關鍵注意事項
- 帳號密碼同步:兩節點本地 Administrator 帳號/密碼必須一致,否則節點間通訊認證失敗。
- 儲存主機清單:NLB 管理器 → 檔案 → 「儲存主機清單」,否則重開管理器看不到叢集配置。兩節點皆須儲存。
- 啟用事件日誌:NLB 管理器 → 叢集內容 → 「記錄」索引標籤 → 勾選所有等級,便於事後分析。
- 多播 MAC 洪流風險:部分舊式交換機不支援多播 MAC 學習,導致叢集流量廣播至所有埠。解決:啟用 IGMP Snooping、或配置靜態多播 MAC 表項、或改用單播模式 (需雙網卡)。
- NLB ≠ 應用層負載平衡:NLB 僅第 4 層 (IP/埠) 分發,無感知應用健康狀態。生產環境建議前置 Layer 7 LB (HAProxy, Nginx, F5, Azure LB) 或搭配健康檢查腳本動態調整 NLB 權重。
遵循上述流程,可在 Server 2003 上快速部署雙節點 NLB 叢集,為 Web/應用層提供基礎高可用性。後續建議規劃遷移至 Windows Server 2016+ 或雲端原生負載平衡服務。