首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Windows 平台分散式架構實戰:網路負載平衡 (NLB) 部署與效能測試完整記錄

     編輯:關於.NET

為什麼需要負載平衡

  • 高可用性:單一 Web 伺服器故障導致全站掛點。NLB 前端分流,後端多台 Web Server,單台故障不影響服務。
  • 水平擴展:單台伺服器處理上限固定。新增節點線性提升吞吐量,成本遠低於垂直升級(CPU/記憶體/SSD)。

NLB 分發演算法

模式特點
輪詢依序分發,不考慮負載。
加權依節點效能配比權重。
隨機隨機分發。
親和性同一 Session 固定導向同節點。
最少連線導向當前連線最少節點。
回應時間導向回應最快節點。

技術實作類型

  • 反向代理:LB 維持兩條 TCP 連線,客戶端 IP 變為 LB IP。
  • 透明反向代理:保留真實客戶端 IP。
  • 直接伺服器回傳 (DSR):修改 MAC 位址,回應直接回客戶端,效能最佳。
  • NAT 負載平衡:修改封包目標 IP 導向後端。
  • Microsoft NLB:Windows 內建,叢集模式運作,本文採用此方案。

效能基準測試環境

  • 宿主機:Intel i5-4570 3.19GHz、4GB RAM、SSD。
  • Hyper-V 虛擬機 x4(Web01~03、DB),各 1 vCPU、1GB RAM。
  • 應用:ASP.NET MVC 4 + EF6 + SQL Server 2008 + IIS 8.5。
  • 測試頁面:首頁列出 500 筆商品資料。
  • 工具:ab -n 1000 -c 100(忽略網路延遲,專注伺服器處理能力)。

測試結果演進

1. 單一 Web + 單一 DB(基準)

吞吐量:~110~130 req/s。併發 200 時平均回應 1.5s,400 併發超過 3s。

單機測試

2. Web/DB 分離(單 Web + 獨立 DB)

吞吐量:~150 req/s(+50%)。併發 300/400 回應時間明顯改善。

Web DB 分離

3. 啟用 NLB:雙 Web + 獨立 DB

安裝 NLB 功能,建立叢集 IP 192.168.1.254,多播模式,Port 80 TCP、無親和性。

NLB 新建叢集 叢集 IP 連接埠規則

吞吐量:~230 req/s(較單 Web +50%)。理論 300 受限於單一 DB 瓶頸。

雙 Web NLB 測試

4. 三 Web + 獨立 DB

新增 Web03 加入叢集。吞吐量:~360 req/s(再提升 56%)。400 併發下平均回應 < 1s。

三節點叢集 三 Web 測試

效能趨勢圖

吞吐量趨勢 回應時間趨勢

NLB 部署關鍵步驟

  1. 所有 Web 節點設定靜態 IP。
  2. 透過 Server Manager > Features > Network Load Balancing 安裝功能。
  3. 任一節點開啟 NLB 管理工具,右鍵「Network Load Balancing Clusters」>「New Cluster」。
  4. 依序設定:主機 IP、叢集 IP(對外服務 IP)、多播模式、Port 80 TCP、無親和性。
  5. 完成後,在叢集右鍵「Add Host to Cluster」加入其他節點。
  6. 驗證:瀏覽叢集 IP,確認請求分流至各節點(可在頁面顯示機器名稱)。

已知限制與後續規劃

  • NLB 本身為單點故障,需搭配 DNS 輪詢或硬體 LB 實現前端高可用。
  • 無內建健康檢查深度(僅 Ping),無法感知應用層掛掛。
  • Session 親和性僅支援 IP/單一親和性,複雜場景需應用層處理(Redis Session Store)。
  • 下階段:引入 ARR (Application Request Routing) 實現應用層負載平衡、健康檢查、SSL 卸載、快取加速。

結語

Windows NLB 以零額外成本、原生整合方式提供基礎負載平衡,配合 Web/DB 分離、水平擴展節點,能以低成本支撐中型流量網站。實測 3 Web 節點達 360 req/s、400 併發 < 1s 回應,滿足大多數中小企業業務需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved