極速雲online 極速雲online 立即諮詢

Azure帳號代開 Azure虛擬機如何配置負載均衡

微軟雲Azure / 2026-08-12 16:14:35

前言:你到底要的是哪種「負載均衡」

談 Azure 虛擬機(VM)配置負載均衡,第一個問題不是「怎麼點按按鈕」,而是「你要分散的是什麼流量、需要多穩、要不要保證連線一致性」。因為 Azure 提供的負載均衡能力不只一種:有傳統意義的四層負載均衡,也有更高層的能力;而你的架構會決定你應該選哪一套,以及網路該怎麼設計。

以最常見的場景來說,你會有至少兩台(建議多台)虛擬機,運行同一個服務(例如 Web、API、或 TCP 服務)。你希望使用者的連線被分配到不同 VM 上,同時當某台 VM 異常時,流量能自動避開,並在其恢復後重新加入。

因此,一套清晰的目標可寫成:

  • 對外入口要穩定:不因 VM 擴縮或故障而影響。
  • 分散流量:讓多台 VM 共同承擔。
  • 健康檢查:自動判斷哪些後端可用。
  • 連線屬性可控:例如 TCP 連線維持、特定埠一致性。
  • 易於運維:新增 VM 後可以快速納管。

接下來我們用一個實作型的思路,從網路到設定,逐步把「負載均衡」搭起來,並在每一步告訴你可能踩的坑。

第一章:在動手前先做需求與網路規劃

1.1 確認流量型態與協定層級

負載均衡器是否能支援你的協定,通常取決於你使用的能力層級。大多數 VM 上的 Web(HTTP/HTTPS)或一般 TCP 服務,都可以依照對應的埠與協定進行轉發與健康檢查。

你需要先回答:

  • 對外提供哪個服務?(HTTP 80、HTTPS 443、或自訂 TCP 埠)
  • 是否需要 TLS 終止?(有些情境在負載均衡層處理,有些在 VM 內處理)
  • 是否需要會話一致性(sticky session)?例如部分 Web 應用把會話存在記憶體中。
  • 健康檢查用什麼方式?HTTP 路徑?TCP 連線?或是其他探測方式。

1.2 設計 VNet 與子網:先把「可路由」想清楚

Azure 負載均衡常見做法是讓負載均衡器與後端 VM 位於同一個虛擬網路(VNet)架構下,並用子網管理 IP。你不需要複雜,但要確保:

  • VM 網路介面(NIC)有可用的私有 IP,且部署在目標子網。
  • 負載均衡器引用正確的子網/前端配置方式。
  • 網路安全群組(NSG)與路由(UDR)不會擋掉健康檢查或服務流量。

很多「負載均衡器看起來設定成功但流量不進 VM」的問題,都與 NSG 或防火牆規則有關。後面我們會把排查清單整理成可以直接用的步驟。

1.3 規劃公網與私網:前端 IP 是誰?給誰用?

Azure帳號代開 你有兩種主要選擇:對外(公網)入口或內部(私網)入口。前端 IP 的選擇會影響你要怎麼測試,也影響客戶端來源。

  • 公網:適合面向互聯網的服務。
  • 私網:適合內部系統、跨 VNet、或需要走 VPN/ExpressRoute 的企業網路。

本文以最常見的「公網入口 + VM 後端」為思路描述,你若是內部入口,流程概念一樣,只是前端與路由策略不同。

第二章:建立負載均衡所需的核心元件

要把負載均衡器搭起來,通常至少包含幾個核心概念:前端、後端池、探測器、負載均衡規則。你可以把它理解成「入口如何接收」與「後端如何被判斷可用、以及如何轉發」。

2.1 前端(Front-end):入口 IP 與連線接法

Azure帳號代開 前端是外界用來連到你的服務的位址。它可能是公網 IP 或內部 IP。你會為負載均衡器建立一個前端配置,並指定其對外使用的連接埠(例如 80 或 443)與協定。

重點是:前端負責「接到」連線,但真正決定「轉去哪台 VM」的是後端池與規則。

2.2 後端池(Backend pool):哪些 VM 會被分流

後端池是一組候選目標。你會把 VM 的 NIC(網路介面)加入後端池,或用其他方式把 VM 納入。後端池的配置要一致:例如都提供同一埠的服務。

你至少需要兩台以上的 VM 才能體現負載均衡的意義;如果只有一台,健康檢查仍然能工作,但分流價值會大幅下降。

2.3 健康探測器(Health probe):誰是可用的後端

健康探測器會對後端發出探測,判斷該 VM 是否可接流量。它是整個系統的「眼睛」。如果探測器設定錯了,你的負載均衡可能會把流量導到不可用的 VM,或反過來讓所有 VM 都被判定為不健康。

你需要考慮:

  • 探測協定與端口:探測用的埠要與你的服務對應。
  • 探測路徑(若是 HTTP/HTTPS 探測):路徑必須存在且返回可預期的狀態碼。
  • 超時與間隔:不要過於激進,也不要太慢。
  • 允許的回應:例如 HTTP 探測要檢查特定狀態碼(200-399 常見)。

2.4 負載均衡規則(Load balancing rules):如何把前端連到後端

規則描述「前端哪個連接埠、協定」要怎麼映射到「後端哪個連接埠」,以及使用哪個健康探測器。

常見規則包含:

  • 前端埠與後端埠:例如前端 80 -> 後端 80。
  • 協定:TCP。
  • 會話持久性(如果需要):例如同一用戶在一段時間內維持到同一台 VM。
  • 來源 NAT(SNAT)相關行為:影響回應路由與連線數量,這也是常見的排查點。

第三章:實作步驟(以 Web 服務為例)

接下來用一個務實流程來走:假設你有兩台 VM(vm-01、vm-02),都部署了 Web 服務,並在 VM 上開放 HTTP 80 端口。目標是讓使用者存取負載均衡器的前端 IP(或 DNS)時,連線自動分配到健康的 VM。

3.1 建立或確認 VM 與服務

Azure帳號代開 首先確認每台 VM 上服務運行正常。你可以直接在 VM 內部測試:

  • 本機或通過內網 IP 測試:curl 或瀏覽器訪問是否可用。
  • 確認服務監聽在正確的埠(例如 0.0.0.0:80 或對應的網卡埠)。
  • 確認 OS 防火牆(例如 Windows 防火牆或 Linux iptables/ufw)允許入站連線。
  • 確認 NSG 規則允許負載均衡器探測與流量。

很多人只開了服務端口,但忽略了 NSG 或 VM 防火牆,結果探測失敗,後端池永遠不健康。

3.2 建立後端池並加入 VM NIC

進入負載均衡器配置頁面後,先建立後端池。然後把 vm-01 與 vm-02 的 NIC 加入後端池。這一步的關鍵是:你加入的是 NIC,而不是 VM 名稱;每台 VM 可能有多張 NIC,但負載均衡通常針對特定 NIC。

若你有多 NIC,建議先確認哪張 NIC 承載服務流量,並確保 NSG 附在正確的 NIC 上。

3.3 設定健康探測器

接著建立健康探測器。對於 Web 常見做法是 HTTP 探測。例如:

  • 協定:HTTP
  • 端口:80
  • 路徑:/health 或 / (看你服務提供什麼)
  • 探測間隔:例如每 5 秒
  • 不健康閾值/健康閾值:例如連續幾次失敗視為不健康

你要特別小心探測路徑不要依賴外部條件(例如需要存取資料庫才回應 200)。如果你的健康檢查過於嚴格,可能造成短暫故障就讓服務被迅速剔除,反而降低整體可用性。理想狀態是探測器反映「服務核心是否能提供回應」,而不是把所有依賴都納入。

3.4 建立負載均衡規則:前端到後端的映射

建立規則時,你需要選擇:

  • 前端 IP:負載均衡器的前端(公網 IP 或內部 IP)
  • 前端埠:例如 80
  • 後端埠:例如 80
  • 協定:TCP
  • 健康探測器:綁定你剛才建立的探測器
  • 會話持久性:若應用需要,才開啟,否則可保持關閉(通常更利於均衡)。

如果你是 HTTP/HTTPS 服務,還要注意 HTTPS 可能牽涉憑證與 TLS 終止位置。簡單起見,若先跑 HTTP,流程會更容易驗證。

3.5 檢查 SNAT 與連線來源:別忽略這個細節

當負載均衡器把連線轉到後端 VM 時,回包如何回來會影響你的體驗。Azure 在很多情境會做來源 NAT(SNAT)或針對連線管理做特定行為。若你的流量來源多、連線數量大,SNAT 相關限制可能成為瓶頸。

雖然你可以先用預設值跑通流程,但在規模化或高併發場景,建議你提前評估:

  • 連線數量預估:高併發下 SNAT 端口耗盡風險存在。
  • 長連線:例如 WebSocket 或高頻 API 呼叫。
  • 多端口映射:如果你的規則不只一個埠,回包壓力會更複雜。

這些因素不會影響「是否能通」,但會影響「上線後能不能穩」。因此在本文的實作驗證後,我也會在排查章節留下一些可觀察的指標。

3.6 建立並驗證前端:DNS 或直接測試 IP

配置完成後,你可以用公網 IP 直接測試:

  • 從你的電腦或同網段主機訪問負載均衡器前端 IP 的 80。
  • 觀察是否能輪流命中後端 VM。
  • 在 VM 上準備能辨識來源的回應(例如顯示主機名),用來確認分流是否正常。

驗證方式要「可觀測」。你不應只用「能打開網頁」來判斷,因為健康探測器可能也在運作但尚未真的把流量平均分配。

第四章:健康檢查怎麼影響真實流量

健康探測器的設定是負載均衡成敗的分界線。探測器判定不健康時,負載均衡器會把該 VM 排除在轉發清單之外。你要理解兩個時間概念:判定延遲與恢復延遲。這會影響故障切換速度。

4.1 HTTP 探測與 TCP 探測的差異

HTTP 探測比 TCP 探測更像「真正用戶體驗」。因為它不只看端口是否可連線,還會看應用層是否回應預期狀態碼。

  • TCP 探測:只要端口能接受連線就算健康,可能會把應用故障仍判為可用。
  • HTTP 探測:若應用返回 500/404 或超時,會被判為不健康,更符合 Web 服務需求。

但 HTTP 探測也有代價:探測路徑要維護、狀態碼要一致、應用要能快速回應。你應該提供一個專用的 /health 端點,讓健康檢查簡單且穩定。

Azure帳號代開 4.2 健康探測失敗的常見原因

Azure帳號代開 以下是最常見的失敗類型,你可以逐條對照檢查:

  • VM 服務沒有在正確埠監聽。
  • OS 防火牆擋住入站連線。
  • NSG 沒有允許探測來源或探測端口。
  • /health 路徑不存在,或回傳狀態碼不符合探測器的預期範圍。
  • 應用依賴資料庫/外部服務才回應成功,導致探測器在外部故障時把 VM 全擋掉。
  • 路徑或重導致探測超時(例如反向代理配置不一致)。

如果你把探測端點設計成「只檢查服務本體是否起來」,通常能避免過度排除。

Azure帳號代開 4.3 故障切換的行為:你會看到什麼

當其中一台 VM 故障時,你希望使用者的下一次連線會自動落在健康的 VM。你可以用兩種方法驗證:

  • 停掉其中一台 VM 的服務(例如關閉 web server 或讓它回傳錯誤),看負載均衡器是否將它標記為不健康。
  • Azure帳號代開 觀察連線命中:在健康與不健康切換期間,分流是否符合預期。

Azure帳號代開 如果你看到「健康狀態切很慢」,通常是因為探測間隔與閾值設得太保守。你可以調整,但也別讓它太快,避免抖動。

第五章:會話持久性與應用層設計

負載均衡把不同請求分配到不同 VM。這對無狀態(stateless)服務通常沒問題;但對把會話存放在記憶體的應用會造成問題。此時你可能會考慮會話持久性,但它只是緩解,不是根治。

5.1 何時需要 sticky session

當你有以下特徵,可能需要會話持久性:

  • 應用把登入狀態存放在 VM 記憶體。
  • 會話未使用共享儲存(例如 Redis、資料庫或集中式 session service)。
  • 應用不具備水平擴展能力。

如果你能把會話設計成外部共享儲存,通常會比 sticky session 更可靠,因為它允許你更自由地擴縮與維護。

5.2 不建議把 sticky session 當作主要方案

sticky session 的問題在於:當某台 VM 故障,這個「黏」住的會話也會失效,使用者體驗仍會受到影響。更長遠的做法是讓應用更接近無狀態。

因此,在建立負載均衡規則時,你可以先用「不開啟會話持久性」跑通,驗證分流與健康檢查後,再依應用需求評估是否要開啟。

第六章:常見錯誤與排查清單

負載均衡最怕的是「表面正常、實際不通」。下面這份清單可以直接當作你 troubleshooting 的順序,從快到慢、從網路到應用。

6.1 用戶端測試能連,但後端不分流

  • 確認規則是否綁定正確的健康探測器。
  • 確認後端池是否真正包含 VM 的 NIC。
  • 檢查健康探測器狀態:後端是否顯示 healthy。
  • Azure帳號代開 確認 VM 是否開放服務埠(含 OS 防火牆)。
  • 確認 NSG 是否允許來自負載均衡器所需的入站。

如果健康探測器顯示全部不健康,你就不必一直猜負載均衡器的轉發行為,應先回到探測器與網路規則。

6.2 健康探測器顯示不健康,但你手動訪問 VM 是正常的

這種情境常發生在「網路路徑不同」。你從電腦能訪問 VM,代表某些路徑打通了,但探測器的來源 IP、NSG 規則或防火牆策略可能不同。

  • 檢查 NSG 是否針對探測端點/埠放行。
  • 檢查 VM 上應用是否對特定 Host header 或路徑有不同邏輯,導致 /health 回傳非預期狀態碼。
  • 如果使用 HTTP 探測,確認探測路徑與協定(http/https)一致。

6.3 連線在高併發下開始失敗

這不是一開始就出現的問題,但在正式環境會很常見。可能原因是 SNAT 端口耗盡、後端資源不足、或應用層超時。

  • 監控負載均衡器的連線統計與錯誤(例如逾時、失敗)。
  • Azure帳號代開 查看 VM CPU、記憶體、連線數、服務回應時間。
  • 若使用多規則與多埠,確認負載均衡器的 NAT 行為與連線配額策略。

這階段的排查要偏「數據」而不是憑感覺:你要知道問題出在網路層還是應用層。

6.4 健康狀態抖動:忽好忽壞

抖動通常表示探測端點不穩定,例如探測間隔太短、應用偶發超時、或健康端點依賴外部系統。

  • 調整探測間隔與閾值,讓判定更穩。
  • 簡化 /health 邏輯,避免需要外部依賴才能回應成功。
  • 檢查服務回應時間與錯誤率。

第七章:安全與合規:把負載均衡接好,也要保護好

負載均衡不只是讓流量分出去,也要把攻擊面降到最低。你需要在網路、主機與應用三個層次做控制。

7.1 NSG 原則:最小放行

NSG 建議採用最小權限。對外只開必要的埠(例如 80/443),對後端服務只允許所需來源或至少允許負載均衡器探測。

若你設定太寬,攻擊會更容易;設定太窄,又會導致健康探測不過。

7.2 VM 上的防火牆與應用層防護

即使 NSG 放行,也要在 VM 上確保防火牆符合預期。對 Web 服務,還要處理:

  • HTTP 方法限制(若可行)。
  • 速率限制或 WAF(視架構)。
  • 更新與漏洞修補機制。

7.3 記錄與告警:不要等事故才看日志

上線後,你要能回答「為什麼今天突然變慢」或「為什麼某台 VM 被剔除」。因此建議至少具備:

  • 健康探測結果的趨勢。
  • 後端 VM 的服務錯誤率與回應時間。
  • 負載均衡器的失敗或逾時統計。
  • 資源指標(CPU、Memory、Network)。

第八章:運維與擴充:讓它可持續成長

負載均衡真正的價值在於「可擴」。如果你的新增 VM 都要手動重複設定,那運維成本會迅速上升。你需要思考如何讓擴充更簡單。

8.1 新增 VM 如何納管:保持一致性

當你要擴容時:

  • 先部署相同的服務版本與健康端點。
  • 確認防火牆/NSG一致。
  • 加入後端池並等待健康探測變為 healthy。
  • 用可觀測手段驗證分流是否命中新 VM。

Azure帳號代開 保持 VM 映像(image)與網路規則的一致性,是降低故障的核心。

8.2 零停機更新的基本思路

如果你要更新應用:

  • 先在一台 VM 上部署新版本。
  • 觀察健康端點與錯誤率。
  • 通過後再逐台更新。
  • 必要時可以先把不準備接流量的 VM 從後端池移除,避免影響用戶。

這種方式不需要花太多工具,卻能大幅降低風險。

結語:把負載均衡當作系統工程,而不是一次設定

Azure 虛擬機配置負載均衡,核心並不在於你能不能建立一個規則,而在於你能不能把「入口、分流、健康判斷、連線行為、安全與運維」做成一個穩定且可理解的系統。當你每一步都能回答「為什麼這樣設」與「出了問題要先看哪裡」,你就會從反覆嘗試,走向可預期的交付。

如果你現在正準備上線,建議你用本文提供的流程做一次完整的自我檢查:後端池是否正確、健康探測是否真的通、服務端點是否可被探測器穩定回應、NSG 與防火牆是否一致、以及在高併發下是否有 SNAT 與資源的風險。把這些先想透,上線後你會省下很多不必要的時間。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系