負載平衡一詞是指跨多個運算資源進行處理的分佈。 您可以進行負載平衡,以優化資源使用量、最大化輸送量、將響應時間降至最低,並避免多載任何單一資源。 負載平衡也可以藉由跨備援運算資源分享工作負載來改善可用性。
Azure 提供各種負載平衡服務,可讓您用來將工作負載分散到多個運算資源。 這些服務包括 Azure API 管理、Azure 應用程式閘道、Azure Front Door、Azure Load Balancer 和 Azure 流量管理員。
本文說明可協助您判斷工作負載需求的適當負載平衡解決方案的考慮。
Azure 負載平衡服務
Azure 提供下列主要的負載平衡服務和具有負載平衡功能的服務:
API 管理 是受控服務,可用來發佈、保護、轉換、維護及監視 HTTP(S) API。 它提供您的 API 的閘道器,並且可設定在指定的負載均衡後端集區中,將流量在節點之間進行負載平衡。 您可以選擇三種不同的負載平衡方法:輪詢法、加權法和基於優先級的方法。
這很重要
API 管理不是傳統的一般用途負載平衡器。 它專為 HTTP API 所設計,其負載平衡功能在其更廣泛的 API 管理功能中是選擇性的。 本文包含 API 管理以取得完整性,因為它提供特定 API 裝載拓撲的負載平衡功能。 不過,其主要用途是 API 閘道功能,而不是負載平衡。
應用程式閘道 是 Proxy 負載平衡器。 它提供應用程式傳遞控制器功能做為受控服務。 它提供各種第 7 層負載平衡、路由、TLS 卸載和 Web 應用程式防火牆功能。 作為終端負載平衡器,它還為 TCP 和 TLS 協定提供第 4 層負載平衡 。 使用應用程式閘道,將流量從公用網路空間轉換至裝載於區域內專用網空間的 Web 伺服器。
適用於容器的應用程式閘道是應用程式層 (第 7 層) 負載平衡和動態流量管理產品,適用於在 Kubernetes 叢集中執行的工作負載。
Azure Front Door 是應用程式傳遞網路,可為 Web 應用程式提供全域負載平衡和網站加速。 它為您的應用程式提供第 7 層功能,例如安全套接層 (SSL) 卸除、基於路徑的路由、快速故障切換和快取,來提升效能及高可用性。
Load Balancer 是一種第 4 層服務,可跨所有使用者數據報通訊協定 (UDP) 和傳輸控制通訊協定 (TCP) 通訊協定處理輸入和輸出流量。 它專為高效能和超低延遲而設計。 旨在每秒處理數百萬個要求,同時確保解決方案的高可用性。 Load Balancer 是區域備援,可確保跨可用性區域具有高可用性。 它同時支持區域部署拓撲和 跨區域拓撲。
流量管理員 是以功能變數名稱系統(DNS)為基礎的流量負載平衡器,可讓您以最佳方式將流量分散到全球 Azure 區域的服務,同時提供高可用性和回應性。 由於流量管理員是 DNS 型負載平衡服務,因此只會在網域層級進行負載平衡。 因此,它無法像 Azure Front Door 一樣快速地故障轉移。 忽略 DNS 存留時間 (TTL) 值的 DNS 快取和系統通常會導致此延遲。
備註
叢集技術,例如 Azure Container Apps 或 Azure Kubernetes Service (AKS),包含負載平衡建構。 這些建構主要在自己的叢集界限範圍內運作。 他們會根據準備及健康檢查,將流量導向可用的應用程式實例。 本文未涵蓋所有這些負載平衡選項。
服務分類
Azure 負載平衡服務可依兩個維度分類:全域與區域與 HTTP(S) 與非 HTTP(S)。
全球與區域
全球: 這些負載平衡服務會將流量分散到區域後端、雲端或混合式內部部署服務。 它們提供單一控制平台,將使用者流量路由傳送到全球可用的後端服務。 這些服務會回應服務可靠性或效能的變更,以將可用性和效能最大化。 您可以將它們視為在應用程式狀態、端點或擴充單元之間進行負載平衡的系統,這些單位分佈在不同的區域或地理位置。
地域: 這些負載平衡服務會將虛擬網路內的流量分散到虛擬機(VM)或區域內的區域和區域備援服務端點。 可視為在虛擬網路中某個區域內的 VM、容器或叢集之間負載平衡的系統。
HTTP(S) 與非 HTTP(S)
HTTP(S): 這些負載平衡服務是第 7 層 負載平衡器,只接受 HTTP(S) 流量。 它們是針對 Web 應用程式或其他 HTTP(S) 端點所設計。 功能包括 SSL 卸除、Web 應用程式防火牆、路徑型負載平衡和會話親和性。
非 HTTP(S): 這些負載平衡服務包括 第 4 層 TCP 和 UDP 服務,或 DNS 型負載平衡服務。
下表摘要說明 Azure 負載平衡服務。
| 服務 | 全域或地區 | 建議的流量 |
|---|---|---|
| API Management | 區域或全域 | 僅限 HTTP(S) API |
| 應用程式閘道 | 區域性 | HTTP(S)、TCP 和 TLS |
| 適用於容器的應用程式閘道 | 區域性 | HTTP(S) |
| Azure Front Door | 全球 | HTTP(S) |
| Load Balancer | 區域或全域 | Non-HTTP(S) |
| Traffic Manager | 全球 | Non-HTTP(S) |
備註
流量管理員和負載平衡器可以分配任何流量類型,包括 HTTP(S)。 不過,這些服務不提供第7層功能。 不同於Load Balancer,流量管理員不會直接處理流量。 流量管理員會使用 DNS 將客戶端導向至適當的端點。
為您的案例選擇負載平衡解決方案
當您選取負載平衡解決方案時,請考慮下列因素:
流量類型: 判斷其為 Web HTTP(S) 應用程式,以及其為公開或私人應用程式。
全域與地區: 釐清您是否需要在單一虛擬網路內對 VM 或容器進行負載平衡,或是跨區域對縮放單位或部署進行負載平衡,或者同時實現這兩者。
可用性: 檢閱 服務等級協定 (SLA) 。
成本: 考慮服務本身的成本,以及管理服務所建置解決方案的營運成本。 如需詳細資訊,請參閱 Azure 定價。
功能和限制: 識別每個服務和適用的 服務限制所支援的功能。
下列流程圖可協助您為應用程式選擇負載平衡解決方案。 流程圖會引導您完成一組關鍵決策準則,以達成建議。
小提示
你可以使用 Azure Copilot 來協助你完成這個決策,類似這裡描述的流程圖。 欲了解更多資訊,請參閱 使用 Microsoft Azure Copilot 與 Azure Load Balancer 合作。
每個應用程式都有在簡單判定樹中未擷取的獨特需求。 將此流程圖或 Copilot 建議視為起點。 然後執行更詳細的評估。
當您的工作負載包含數個需要負載平衡的服務時,請個別評估每個服務。 有效的設定通常會使用一種以上的負載平衡解決方案。 您可以在工作負載架構的不同位置併入這些解決方案,以發揮獨特的功能或擔任不同的角色。
定義
Web 應用程式 (HTTP/HTTPS) 是指至少需要下列其中一項功能的應用程式:
- 為第 7 層數據做出路由決策,例如 URL 路徑
- 支援檢查通信負載,例如 HTTP 請求主體
- 處理傳輸層安全性(TLS)功能
非 HTTP(S) 應用程式 是指需要第 4 層(TCP 或 UDP 協定)或傳輸層安全性(TLS 協定)支援的應用程式。 Azure 負載平衡器和 Azure 應用程式閘道都提供處理這類流量的功能。 但是,它們的功能和行為有所不同,如本文比較 文章所述。
因特網面向應用程式 是指可從因特網公開存取的應用程式。 最佳做法是,應用程式擁有者會套用限制式存取原則,或藉由設定 Web 應用程式防火牆和分散式阻斷服務保護等供應專案來保護應用程式。
全域或部署於多個區域 表示負載平衡器應該具有單一高可用性控制平面,以將流量路由傳送至全域分散式應用程式上的公用端點。 此設定可支援跨區域主動-主動或主動-被動拓撲。
備註
您可以使用一個區域服務,例如應用程式閘道,跨多個區域進行負載平衡,並透過單一控制平台控制路由。 其運作方式是使用 跨區域私人連結、全域虛擬網路對等互連,或甚至是其他區域中服務的公用IP位址。
此案例不是此決策的主要點。
使用區域資源作為全域分散式後端的路由器,會導致區域單一失敗點。 它也會導致額外的延遲,因為流量必須先經過一個區域,再前往另一個區域,然後返回原地。
平臺即服務 (PaaS) 提供受控裝載環境,您可以在其中部署應用程式,而不需要管理 VM 或網路資源。 在此情況下,PaaS 是指在區域內提供整合式負載平衡的服務。 如需詳細資訊,請參閱 選擇計算服務以取得延展性。
AKS 可讓您部署和管理容器化應用程式。 AKS 提供無伺服器 Kubernetes、整合式持續整合和持續交付(CI/CD)體驗,以及企業級的安全性與治理。 這些 AKS 工作負載稱為 AKS 後端。 如需詳細資訊,請參閱 AKS 架構設計。
基礎結構即服務 (IaaS) 是一種運算選項,可讓您布建所需的 VM,以及相關聯的網路和記憶體元件。 IaaS 應用程式需要使用Load Balancer在虛擬網路內進行內部負載平衡。
應用層處理 是指虛擬網路內的特殊路由。 範例包括跨 VM 或虛擬機擴展集的路徑型路由。 如需詳細資訊,請參閱 在 Azure Front Door 後方部署應用程式閘道。
只有 API 是指對不是 Web 應用程式的 HTTP(S) API 進行負載平衡的需求。 在此情況下,如果您的工作負載已經以其閘道功能使用 API 管理,您可考慮啟用其可選的負載平衡功能,以引導流量至尚未透過其他機制進行負載平衡的 API 後端。 如果您的工作負載未使用 API 管理,請勿只將其用於負載平衡。
內容分發網路(CDN) 是指透過其地理上分散的伺服器網路來加速網頁載入時間的功能。 CDN 可啟用效能加速或最佳化的接入點入口,以加速用戶端上線至目的地網路。 Azure Front Door 同時支援 內容傳遞網路 和 Anycast 流量加速。 您可以在架構中使用或不使用應用程式閘道來取得這兩項功能的優點。
傳遞負載平衡器 是一種負載平衡器,其中用戶端直接與負載平衡器的分佈演算法所選取的後端伺服器建立連線。
終止型負載平衡器是指用戶端與負載平衡器(代理)建立一個連接,而負載平衡器則起始與後端伺服器的另一個獨立連接。
其他考慮
每個負載平衡服務也有您應該考慮的功能支援或實作詳細數據。 以下是一些可能與您的負載平衡案例相關的範例:
- WebSocket 支援
- 伺服器傳送的事件支援
- HTTP/2 支援(接收和繼續後端節點)
- 黏性會話支援
- 後端節點健康情況監視機制
- 在偵測到狀況不良的節點與從路由邏輯中移除之間,可能影響到客戶體驗或造成延遲。
將功能卸除至負載平衡器
Azure 中的某些負載平衡選項可讓您將功能從後端節點卸除至負載平衡器。 這些選項會實現 閘道卸載 雲端設計模式。 例如,應用程式閘道可以卸除 TLS,因此工作負載的公開憑證會在一個位置進行管理,而不是跨後端節點進行管理。 API 管理可以設定為卸載一些基本的授權考量,例如驗證 JSON Web Token (JWT) 存取令牌中的聲明。 卸除跨領域考慮有助於降低後端邏輯的複雜性,並改善其效能。
範例
下表根據解決方案中使用的負載平衡服務列出各種文章。
| 服務業 | 文章 | 說明 |
|---|---|---|
| Load Balancer | 跨越多個可用性區域為 VM 進行負載平衡 | 跨可用性區域的 VM 進行負載平衡,以協助保護您的應用程式和數據,避免整個數據中心發生不太可能失敗或遺失。 使用區域備援時,一或多個可用性區域可能會失敗,而且只要區域中的一個區域保持狀況良好,數據路徑就會存留。 |
| Traffic Manager | 針對高可用性和災害復原而建置的多層 Web 應用程式 | 部署專為高可用性和災害復原而建置的復原多層次應用程式。 如果主要區域變得無法使用,流量管理員就會容錯移轉到次要區域。 |
| 應用程式閘道和 API 管理 | API 管理登陸區域架構 | 使用應用程式閘道卸除 Web 應用程式防火牆和 TLS。 使用 API 管理跨 API 後端進行負載平衡。 |
| 流量管理員和應用程式閘道 | 使用 流量管理員 和 應用程式閘道 進行多重區域負載平衡 | 瞭解如何為 Web 工作負載提供服務,並在多個 Azure 區域中部署復原的多層式應用程式,以達到高可用性和健全的災害復原基礎結構。 |