Azure Load Balancer 的運作方式

已完成

Azure Load Balancer 會在 OSI 模型的傳輸層運作。 此第 4 層功能可根據流量的特定屬性,允許流量管理。 屬性包括來源和目的地位址、TCP 或 UDP 通訊協定類型,以及埠號碼。

Load Balancer有數個搭配運作的元素,用以確保應用程式的高可用性和效能:

  • 前端 IP
  • 負載平衡器規則
  • 後端集區
  • 健康情況探查
  • 輸入 NAT 規則
  • 高可用性連接埠
  • 輸出規則

前端 IP

前端 IP 位址是用戶端用來連線至 Web 應用程式的位址。 前端 IP 位址可以是公用或私人 IP 位址。 Azure 負載平衡器可以有多個前端 IP。 選取公用或私人 IP 位址會決定要建立的負載平衡器類型:

  • 公用 IP 位址:公用負載平衡器:公用負載平衡器會將傳入流量的公用 IP 位址和連接埠對應至 VM 的私人 IP 位址和連接埠。 您可以套用負載平衡規則,以將特定類型的流量分散至多個 VM 或服務。 例如,您可以將 Web 要求的流量負載分散於多個網頁伺服器。 負載平衡器會將來自 VM 私人 IP 和埠的回應流量對應至負載平衡器的公用 IP 和埠。 然後,它會將回應傳回要求用戶端。

  • 私人 IP 位址:內部負載平衡器:內部負載平衡器會將流量分散到位於虛擬網路內的資源。 Azure 會限制存取虛擬網路的負載平衡前端 IP 位址。 前端 IP 位址與虛擬網路絕不會直接公開至網際網路端點。 內部企業營運應用程式會在 Azure 中執行,並且可透過 VPN 或 ExpressRoute 連線從 Azure 內或從內部部署資源存取。

    Diagram that depicts how public and internal load balancers work in Azure Load Balancer.

負載平衡器規則

負載平衡器規則可定義如何將流量分散至後端集區。 規則會將指定的前端 IP 與連接埠組合對應到一組後端 IP 位址與連接埠組合。

Diagram that depicts how load balancer rules work in Azure Load Balancer.

流量是使用由下列元素組成的五元組哈希來管理:

  • 來源 IP:要求端用戶端的 IP 位址。
  • 來源連接埠:要求端用戶端的連接埠。
  • 目的地 IP:要求的目的地 IP 位址。
  • 目的地連接埠:要求的目的地連接埠。
  • 通訊協定類型:指定的通訊協定類型 (TCP 或 UDP)。
  • 會話親和性:確保相同的集區節點一律會處理用戶端的流量。

Load Balancer 可讓您對多個連接埠、多個 IP 位址或兩者上的服務進行負載平衡。 您可以為每個前端 IP 設定不同的負載平衡規則。 只有 IaaS VM 可支援多個前端設定。

Load Balancer 無法根據內部流量內容套用不同的規則,因為它在 OSI 模型的第 4 層(傳輸層)運作。 如果您需要根據其第 7 層 (應用層) 屬性來管理流量,您必須部署 Azure 應用程式閘道 之類的解決方案。

後端集區

後端集區是虛擬機器擴展集中的 VM 或執行個體群組,可回應傳入要求。 若要以符合成本效益的方式進行擴充,以滿足大量的傳入流量運算,計算指導方針通常會建議您在後端集區中新增更多執行個體。

Load Balancer 可實作自動重新設定,以在執行個體擴大或縮小時,將負載重新分配至數量已改變的執行個體。 例如,如果您在後端集區額外新增了兩個 VM 執行個體,Load Balancer 將會自行重新設定,以根據已設定的負載平衡規則開始平衡這些執行個體的流量。

健康情況探查

健全狀態探查可用來確認後端集區中的執行個體健全狀態。 此健康情況探查會判斷實例是否狀況良好且可接收流量。 您可以為健全狀態探查定義狀況不良閾值。 當探查無法回應時,負載平衡器會停止傳送新的連線至狀況不良的執行個體。 探查失敗不會影響現有的連線。 連線會持續直到:

  • 應用程式結束流程。
  • 發生閒置逾時。
  • VM 關機。

Load Balancer 可讓您為端點設定不同的健全狀態探查類型:TCP、HTTP 和 HTTPS。

  • TCP 自訂探查:要執行此探查,必須對已定義的探查連接埠建立成功的 TCP 工作階段。 如果 VM 上有指定的接聽程式,表示探查成功。 如果系統拒絕連線,探查便會失敗。 您可以指定連接埠、間隔和狀況不良的閾值。
  • HTTP 或 HTTPS 自訂探查:負載平衡器會定期探查您的端點 (預設為每 15 秒一次)。 如果執行個體在逾時期限 (預設值為 31 秒) 內以 HTTP 200 回應,則會視為狀況良好。 HTTP 200 以外的任何狀態皆會造成探查失敗。 您可以指定連接埠 (連接埠)、從後端要求健全狀態狀態的 URI (URI)、探查嘗試之間的時間長度 (間隔),以及將執行個體視為狀況不良的失敗次數 (狀況不良的閾值)。

工作階段持續性

根據預設,Load Balancer 會在多個 VM 執行個體之間均分網路流量。 它只在傳輸工作階段內提供綁定。 工作階段持續性會指定如何處理來自用戶端的流量。 默認行為 (None) 是任何狀況良好的 VM 都可以處理來自客戶端的後續要求。

會話持續性也稱為會話親和性、來源IP親和性或用戶端IP親和性。 此分配模式會使用二元組 (來源 IP 和目的地 IP) 或三元組 (來源 IP、目的地 IP 及通訊協定類型) 雜湊來路由傳送至後端執行個體。 當您使用會話持續性時,來自相同用戶端的聯機會移至後端集區內的相同後端實例。 您可以設定下列其中一個工作階段持續性選項:

  • 無 (預設):指定任何狀況良好的 VM 皆可處理要求。
  • 用戶端 IP (2-tuple):指定相同的後端實例可以處理來自相同用戶端 IP 位址的後續要求。
  • 用戶端 IP 和通訊協定 (3-Tuple):指定相同的後端實例可以處理來自相同用戶端 IP 位址和通訊協定組合的後續要求。

您可以設定下列各節所述的其中一個選項,藉以變更此行為。

高可用性連接埠

使用 protocol - all and port - 0 設定的負載平衡器規則,稱為「高可用性 (HA) 連接埠規則」。 此規則會啟用單一規則,讓抵達內部標準負載平衡器的各個連接埠的所有 TCP 和 UDP 流量進行負載平衡。

負載平衡決策會根據流量做出。 此動作以下列五元組連線為基礎:

  • 來源 IP 位址
  • 來源連接埠
  • 目的地 IP 位址
  • 目的地連接埠
  • 通訊協定

HA 連接埠負載平衡規則可協助您處理重要的使用案例,例如虛擬網路中網路虛擬裝置 (NVA) 的高可用性和規模調整。 此功能可以在必須對大量連接埠進行負載平衡時提供協助。

Diagram that shows how high availability ports work in Azure Load Balancer.

輸入 NAT 規則

您可以將負載平衡規則與網路位址轉譯 (NAT) 規則搭配使用。 例如,您可以從負載平衡器的公用位址中使用 NAT,然後傳向特定 VM 上的 TCP 3389。 此規則組合允許從 Azure 外部進行遠端桌面存取。

Diagram that shows how inbound NAT rules work in Azure Load Balancer.

輸出規則

輸出規則會針對後端集區所識別的所有 VM 或執行個體設定來源網路位址轉譯 (SNAT)。 此規則可讓後端中的執行個體與網際網路或其他公用端點通訊 (輸出)。

Diagram that shows how outbound rules work in Azure Load Balancer.