什麼是 Application Load Balancer? - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

什麼是 Application Load Balancer?

Elastic Load Balancing 會自動將傳入流量分配到一或多個可用區域中的多個目標,例如 EC2 執行個體、容器和 IP 地址。其會監控已註冊目標的運作狀態,並且僅將流量路由至運作狀態良好的目標。當傳入流量隨著時間發生變化,Elastic Load Balancing 會擴展您的負載平衡器。他可以自動擴展以因應絕大多數的工作負載。

Elastic Load Balancing 支援下列負載平衡器:Application Load Balancer、Network Load Balancer、Gateway Load Balancer 和 Classic Load Balancer。您可以選取最符合您需要的負載平衡器類型。本指南主要介紹 Application Load Balancer。如需有關其他負載平衡器的詳細資訊,請參閱 User Guide for Network Load BalancersUser Guide for Gateway Load Balancers 和 《Classic Load Balancer 使用者指南》。

Application Load Balancer 元件

負載平衡器做為用戶端的單一聯絡點。負載平衡器會將傳入的應用程式流量分散到多個可用區域中的多個目標,例如 EC2 執行個體。這會提高您應用程式的可用性。您要為負載平衡器添加一個或多個接聽程式。

接聽程式會使用您所設定的通訊協定與連接埠,檢查來自用戶端的連線請求。您為接聽程式定義的規則,將決定負載平衡器路由請求到已登錄的目標的方法。每個規則由優先順序、一或多個動作及一或多個條件組成。滿足規則的條件時,即會執行它的動作。您必須為每個接聽程式定義預設規則,也可以選擇性地定義額外的規則。

每個目標群組會使用您指定的通訊協定和連接埠號碼,將請求路由至一個或多個已註冊的目標,例如 EC2 執行個體。您可以向多個目標群組註冊任一目標。您可以針對每個目標群組設定運作狀態檢查。凡已註冊至負載平衡器的接聽程式規則中指定之目標群組的所有目標,系統將對其執行運作狀態檢查。

下圖說明基本元件。請注意,每個接聽程式包含預設規則,而一個接聽程式包含另一個規則,可將請求路由至不同的目標群組。一個目標向兩個目標群組註冊。

基本 Application Load Balancer 的元件

如需詳細資訊,請參閱下列 文件:

Application Load Balancer 概觀

Application Load Balancer 在應用程式層 (開放系統互連 (OSI) 模型的第七層) 運作。當負載平衡器收到請求後,它會依優先順序評估接聽程式規則,以決定要套用的規則,然後從目標群組中選取規則動作的目標。您可以設定接聽程式規則,以根據應用程式流量的內容,將請求路由到不同的目標群組。即使一個目標向多個目標群組註冊,每個目標群組的路由都是獨立運作。您可以設定在目標群組層級上使用的路由演算法。預設路由演算法是循環式;或者,您可以指定最少未完成的請求路由演算法。

您可以依據需求變更,為負載平衡器新增和移除目標,而不會中斷應用程式整體的請求流程。當應用程式的流量隨著時間發生變化,Elastic Load Balancing 會擴展您的負載平衡器。Elastic Load Balancing 能夠自動擴展以因應絕大多數的工作負載。

您可以設定運作狀態檢查,用於監控已註冊目標的運作狀態,使負載平衡器只能傳送請求至運作狀態良好的目標。

如需詳細資訊,請參閱 Elastic Load Balancing 使用者指南中的 Elastic Load Balancing的運作方式

從 Classic Load Balancer 遷移的優點

使用 Application Load Balancer (而非 Classic Load Balancer) 具有下列優點:

  • 支援 路徑條件。您可以為接聽程式設定規則,以根據請求中的 URL 來轉送請求。這可讓您將應用程式建構成較小的服務,以根據 URL 的內容,將請求路由傳送到正確的服務。

  • 支援 主機條件。您可以為接聽程式設定規則,以根據 HTTP 標頭中的主機欄位來轉送請求。這可讓您使用單一負載平衡器,將請求路由至多個網域。

  • 支援根據請求中的欄位 (例如 HTTP 標頭條件 和方法、查詢參數及來源 IP 地址) 來路由。

  • 支援將請求路由至單一 EC2 執行個體上的多個應用程式。您可將一個執行個體或 IP 地址註冊到多個目標群組,每個目標群組都在不同的連接埠上。

  • 支援將請求從一個 URL 重新導向另一個 URL。

  • 支援傳回自訂 HTTP 回應。

  • 支援透過 IP 地址註冊目標,包括位於負載平衡器的 VPC 外部的目標。

  • 支援註冊 Lambda 函數做為目標。

  • 支援負載平衡器在路由請求之前,透過企業或社交身分來驗證應用程式的使用者。

  • 支援容器化的應用程式。Amazon Elastic Container Service (Amazon ECS) 可在排程任務時選取未使用的連接埠,並使用此連接埠向目標群組註冊該任務。這使您得以有效利用您的叢集。

  • Support 獨立監視每個服務的健全狀況,因為健全狀況檢查是在目標群組層級定義,而且會在目標群組層級報告許多測 CloudWatch 量結果。將目標群組連接到 Auto Scaling 群組令您能夠隨需動態擴展各項服務。

  • 存取日誌包含其他資訊,且以壓縮格式存放。

  • 提升負載平衡器的效能。

如需各種負載平衡器類型支援的功能詳細資訊,請參閱 Elastic Load Balancing 產品比較

Elastic Load Balancing 適用以下服務,可改善應用程式的可用性和可擴展性。

  • Amazon EC2 – 在雲端執行應用程式的虛擬伺服器。您可以設定負載平衡器,將流量路由到 EC2 執行個體。

  • Amazon EC2 Auto Scaling – 確保您正在執行所需數量的執行個體 (即使其中某個執行個體處於故障狀態),並可讓您隨著執行個體需求的變更,自動增加或減少執行個體的數量。如果您啟用具有 Elastic Load Balancing 的 Auto Scaling,Auto Scaling 啟動的執行個體會自動在目標群組中註冊,而由 Auto Scaling 終止的執行個體會自動從目標群組中取消註冊。

  • AWS Certificate Manager – 建立 HTTPS 接聽程式時,可以指定 ACM 所提供的憑證。負載平衡器會使用此憑證來終止連線,並解密來自用戶端的請求。如需詳細資訊,請參閱 SSL Application Load Balancer 的憑證

  • Amazon CloudWatch — 可讓您監控負載平衡器,並視需要採取行動。如需詳細資訊,請參閱 CloudWatch Application Load Balancer 的指標

  • Amazon ECS – 可讓您在 EC2 執行個體叢集上執行、停止和管理 Docker 容器。您可以設定負載平衡器,將流量路由到容器。如需詳細資訊,請參閱 Amazon Elastic Container Service Developer Guide 中的 Service load balancing

  • AWS Global Accelerator – 改善應用程式的可用性和效能。使用加速器將流量分散到一個或多個 AWS 區域中的多個負載平衡器。如需詳細資訊,請參閱《AWS Global Accelerator 開發人員指南》

  • Route 53 – 透過將網域名稱 (如 www.example.com) 轉換為電腦用來互相連線的數字 IP 地址 (例如 192.0.2.1),提供可靠且經濟實惠的方式來將訪客路由至網站。AWS 會將 URL 指派至負載平衡器等資源。不過,您可能需要能讓使用者輕鬆記住的 URL。例如,您可以將網域名稱映射至負載平衡器。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》中的將流量路由到 ELB 負載平衡器

  • AWS WAF – 您可以使用 AWS WAF 搭配 Application Load Balancer,以根據 Web 存取控制清單 (Web ACL) 中的規則來允許或封鎖請求。如需詳細資訊,請參閱 Application Load Balancer 和 AWS WAF

若要檢視與負載平衡器整合的服務資訊,請在AWS Management Console中選取您的負載平衡器,並選擇 Integrated services (整合服務)​ 索引標籤。

定價

使用負載平衡器時,您只需按實際用量付費。如需詳細資訊,請參閱 Elastic Load Balancing 定價