負載平衡一詞是指將工作負載分散到多個運算資源。 負載平衡旨在將資源使用情況最佳化、最大化輸送量、將回應時間縮到最短,以及避免多載任何單一資源。 還可以在備援運算資源之間分攤工作負載,以改善可用性。
Azure 提供各種負載平衡服務,可讓您用來將工作負載分散到多個運算資源。 這些資源包括 Azure 應用程式閘道、Azure Front Door、Azure Load Balancer 和 Azure 流量管理員。
本文說明判斷適合您工作負載需求的負載平衡解決方案的一些考慮。
服務分類
Azure 負載平衡服務可以依兩個維度分類:全域與區域和 HTTP(S) 與非 HTTP(S)。
全域與地區
- 全域:這些負載平衡服務會將流量分散到區域後端、雲端或混合式內部部署服務。 這些服務支援管理單一控制平面,負責全域將使用者流量路由傳送至可用的後端。 它們通常會回應服務可靠性或效能的變更,以將可用性和效能最大化。 可視為在跨不同區域/地理位置託管的應用程式戳記、端點或縮放單位之間負載平衡的系統。
- 區域:這些負載平衡服務會將虛擬網路內的流量分散到虛擬機(VM)或區域內的區域和區域備援服務端點。 可視為在虛擬網路中某個區域內的 VM、容器或叢集之間負載平衡的系統。
HTTP(S) 與非 HTTP(S)
- HTTP(S):這些負載平衡服務是 僅接受 HTTP(S) 流量的第 7 層負載平衡器。 它們主要用於 Web 應用程式或其他 HTTP(S) 端點。 它們可能有 SSL 卸除、Web 應用程式防火牆、路徑型負載平衡和會話親和性等功能。
- 非 HTTP(S):這些負載平衡服務 第 4 層 TCP 或 UDP 服務,或 DNS 型負載平衡。
下表摘要說明 Azure 負載平衡服務。
服務 | 全球/地區 | 建議的流量 |
---|---|---|
Azure Front Door | 全域 | HTTP(S) |
Azure 流量管理員 | 全域 | 非 HTTP(S) |
Azure 應用程式閘道 | 地區 | HTTP(S) |
Azure Load Balancer | 區域或全域 | 非 HTTP(S) |
注意
Azure 流量管理員和 Azure Load Balancer 具有散發任何流量的功能,包括 HTTP(S)。 不過,這些服務沒有第7層功能。 不同於 Azure Load Balancer,Azure 流量管理員不會直接處理流量;流量管理員會操作 DNS,將客戶端導向至適當的端點。
Azure 負載平衡服務
以下是 Azure 中目前可用的主要負載平衡服務:
Azure Front Door 是一個應用程式傳遞網路,可為 Web 應用程式提供全域負載平衡和網站加速服務。 它為您的應用程式提供第 7 層功能,例如 SSL 卸除、路徑型路由、快速故障轉移和快取,以改善應用程式的效能和高可用性。
流量管理員 是以 DNS 為基礎的流量負載平衡器,可讓您以最佳方式將流量分散到全球 Azure 區域的服務,同時提供高可用性和回應性。 因為流量管理員是 DNS 型負載平衡服務,所以只在網域層級負載平衡。 因此,由於 DNS 快取和系統不接受 DNS TTL 的常見挑戰,因此無法像 Azure Front Door 一樣快速地故障轉移。
應用程式閘道 提供應用程式傳遞控制器即服務,提供各種第 7 層負載平衡功能和 Web 應用程式防火牆功能。 您可以使用它,從公用網路空間轉換到裝載於區域內專用網空間的 Web 伺服器。
Load Balancer 是所有 UDP 和 TCP 通訊協定的高效能、超低延遲第 4 層負載平衡服務(輸入和輸出)。 旨在每秒處理數百萬個要求,同時確保解決方案的高可用性。 Load Balancer 是區域備援,可確保跨可用性區域具有高可用性。 它同時支持區域部署拓撲和 跨區域拓撲。
注意
Azure Container Apps 或 Azure Kubernetes Service 等叢集技術包含負載平衡建構,大部分是在自己的叢集界限範圍內運作,並根據整備程度和健康情況探查將流量路由傳送至可用的應用程式實例。 本文未涵蓋這些負載平衡選項。
Azure 中負載平衡的判定樹
當您選取負載平衡解決方案時,請考慮下列因素:
- 流量類型:這是 Web HTTP(S) 應用程式嗎? 是否為公開或私人應用程式?
- 全域與區域:您需要在單一虛擬網路內對 VM 或容器進行負載平衡,或跨區域或兩者進行縮放單位/部署的負載平衡?
- 可用性:服務等級協議是什麼?
- 成本:如需詳細資訊,請參閱 Azure 定價。 除了該服務本身成本外,也要考慮以該服務為基礎的相關解決方案管理營運成本。
- 功能和限制:每個服務支援哪些功能,以及每個服務的服務限制為何?
![TIP]Azure 入口網站 提供類似下列流程圖的問卷型指南。 在 Azure 入口網站 中,搜尋「負載平衡 - 協助我選擇」。 藉由回答問題,您可以縮小負載平衡選項的範圍。
下列流程圖可協助您為應用程式選擇負載平衡解決方案。 該流程圖將引導您認識一系列關鍵決策準則,以符合建議。
您可將此流程圖當成起點。 每個應用程式皆有獨特需求,因此請採用建議來作為起點。 然後執行更詳細的評估。
當您的工作負載牽涉到數個需要負載平衡的服務時,請務必個別評估每個服務。 在許多情況下,有效的設定會使用一種以上的負載平衡解決方案。 您可以將這些解決方案併入工作負載架構的不同位置,每個解決方案都提供唯一的函式或角色。
定義
Web 應用程式 (HTTP/HTTPS): 這是指需要能夠針對第 7 層數據進行路由決策,例如 URL 路徑、支援檢查通訊承載(例如 HTTP 要求本文),或處理 TLS 功能。
因特網面向應用程式: 可從因特網公開存取的應用程式。 最佳做法是,應用程式擁有者會套用限制式存取原則,或藉由設定 Web 應用程式防火牆和 DDoS 保護等供應專案來保護應用程式。
全域/部署於多個區域: 如果此負載平衡器應該有單一高可用性控制平面,負責將流量路由傳送至全域分散式應用程式上的公用端點。 這可以是跨區域支持主動-主動或主動-被動拓撲。
注意
您可以使用區域服務,例如 應用程式閘道,跨跨越多個區域的後端進行負載平衡,並透過單一控制平面控制路由。 該架構可使用 跨區域 Private Link、全域虛擬網路對等互連,或甚至是其他區域中服務的公用 IP 來達成。
不過,此案例不是此決策的主要點。
使用區域資源作為全域分散式後端的路由器,會導致區域單一失敗點,並會產生額外的延遲,因為流量會在前往另一個區域之前強制流經某個區域,然後再返回一次。
平臺即服務 (PaaS):提供受控裝載環境,您可以在其中部署應用程式,而不需要管理 VM 或網路資源。 在此情況下,PaaS 是指在區域內提供整合式負載平衡的服務。 如需詳細資訊,請參閱 選擇計算服務 – 延展性。
Azure Kubernetes Service (AKS):可讓您部署和管理容器化應用程式。 AKS 提供無伺服器 Kubernetes、整合式持續整合和持續傳遞體驗,以及企業級安全性和治理。 如需 AKS 架構資源的詳細資訊,請參閱 Azure Kubernetes Service 架構設計。
基礎結構即服務 (IaaS):一種運算選項,可讓您布建所需的虛擬機,以及相關聯的網路和記憶體元件。 IaaS 應用程式需要使用Load Balancer在虛擬網路內進行內部負載平衡。
應用層處理:是指虛擬網路內的特殊路由。 例如,跨 VM 或虛擬機擴展集之虛擬網路內的路徑型路由。 如需詳細資訊,請參閱何時應該在 Azure Front Door 後方部署 應用程式閘道?
效能加速:是指加速 Web 存取的功能。 使用內容傳遞網路 (CDN) 或優化的存在點輸入,加速客戶端上線至目的地網路,即可達到效能加速。 Azure Front Door 同時 支援 CDN 和 Anycast 流量加速。 這兩個功能的優點都可以在架構中使用或不使用 應用程式閘道 來取得。
其他考量
每個負載平衡服務也有需要考慮的功能支援或實作詳細數據。 以下是一些可能與您的負載平衡案例相關的範例。
- Web 套接字支援
- HTTP/2 支援 (接收並繼續後端節點)
- 黏性會話支援
- 後端節點健康情況監視機制
- 在狀況不良的節點偵測與從路由邏輯中移除之間,客戶端體驗或延遲。
範例
下表根據作為解決方案使用的負載平衡服務列出各種文章。
服務 | 文章 | 描述 |
---|---|---|
負載平衡器 | 跨可用性區域平衡虛擬機 (VM) 的負載 | 跨可用性區域的 VM 進行負載平衡,以協助保護您的應用程式和數據,避免整個數據中心發生不太可能失敗或遺失。 使用區域備援時,一或多個可用性區域可能會失敗,而且只要區域中的一個區域保持狀況良好,數據路徑就會存留。 |
流量管理員 | 針對高可用性和災害復原而建置的多層 Web 應用程式 | 部署專為高可用性和災害復原而建置的復原多層次應用程式。 如果主要區域變得無法使用,流量管理員就會容錯移轉到次要區域。 |
Azure Front Door + 應用程式閘道 | Azure 上的多租用戶 SaaS | 使用包含 Azure Front Door 和 應用程式閘道 組合的多租用戶解決方案。 Azure Front Door 可協助平衡跨區域的流量負載。 應用程式閘道 路由和負載平衡應用程式中內部的流量,以符合客戶端業務需求的各種服務。 |
流量管理員 + 應用程式閘道 | 使用 流量管理員 和 應用程式閘道 進行多重區域負載平衡 | 瞭解如何為 Web 工作負載提供服務,並在多個 Azure 區域中部署復原的多層式應用程式,以達到高可用性和健全的災害復原基礎結構。 |