Application Load Balancer

利用針對現代應用程式交付的進階請求路由來負載平衡 HTTP 與 HTTPS 流量。

為什麼應該使用 Application Load Balancer?

Application Load Balancer 在請求層 (Layer 7) 運作,根據請求的內容將流量路由到目標 (EC2 執行個體、容器、IP 地址和 Lambda 函數)。Application Load Balancer 適合用於 HTTP 和 HTTPS 流量的進階負載平衡,它針對現代應用程式架構 (包括微型服務和以容器為基礎的應用程式) 提供進階的請求路由。Application Load Balancer 透過一律使用最新的 SSL/TLS 加密技術和協定,以簡化和改進應用程式的安全性。

Page Topics

功能

功能

雙向 TLS 是一種在使用 x509 憑證型身分的用戶端與伺服器之間進行雙向身分驗證的協定。使用此功能,ALB 將驗證用戶端憑證,並對第三方憑證認證機構 (CA) 或私有憑證認證機構 (ACM PCA) 簽發的憑證執行撤銷檢查。負載平衡器也會將用戶端憑證資訊代理至目標,這些資訊可用於應用程式進行授權決策。 

自動目標權重 (ATW) 使用新的加權隨機負載平衡演算法,即使在應用程式的目標受損時也能提高應用程式的可用性。此演算法分析 HTTP 狀態碼和 TCP/TLS 錯誤率,以識別比相同目標群組中的對等錯誤率更高的目標。當 ATW 識別表現不佳的目標時,此功能會根據表現調整導向至每個目標的流量,協助不良的目標成功恢復。

您可根據請求屬性 (例如 X-Forwarded-For header) 來負載平衡 HTTP/HTTPS 流量至目標 (Amazon EC2 執行個體、微服務與容器)。

使用 Amazon Virtual Private Cloud (VPC) 時,您可以建立和管理與 Elastic Load Balancing 關聯的安全群組,以提供更多的聯網和安全選項。您可以將 Application Load Balancer 設定為與網際網路連接,或建立不含公有 IP 地址的負載平衡器以做為內部 (不與網際網路連接) 的負載平衡器。

ALB 支援基於 http_desync_guardian 庫實作 Desync 保護。使用此新功能,可保護客戶應用程式免因 Desync 引起的 HTTP 漏洞受影響,且不會對可用性和/或延遲帶來重大損害。客戶還可根據應用程式架構來選擇其對可疑請求的容忍等級。

Application Load Balancer (ALB) 支援 AWS Outposts,這是一項全受管服務,能將 AWS 基礎設施、服務和工具擴展到幾乎任何資料中心、主機代管空間或內部部署設施,以提供真正的一致性混合體驗。客戶可在支援的執行個體類型佈建 ALB,ALB 將自動縱向擴展至機架可用的容量,以滿足不同層級的應用程式負載,而無需手動干預。客戶還可收到通知,以便協助其處理與負載平衡相關的容量需求。客戶可採用相同 AWS Console、API 與 CLI 在 Outposts 佈建及管理 ALB,就如同其目前在區域內的 ALB 一樣。

Application Load Balancer 支援用戶端和負載平衡器之間的 HTTPS 終止。Application Load Balancer 還提供透過 AWS Identity and Access Management (IAM) 和 AWS Certificate Manager 管理 SSL 憑證,用於預先定義安全政策。

HTTP/2 是新的 HyperText Transfer Protocol (HTTP) 版本,它使用單一多工連接,可在相同的連接傳送多個請求。同時還能在使用二進位格式傳送標頭資料之前進行壓縮,並支援用戶端的 SSL 連接。

ALB 可在微型服務之間或啟用 gRPC 的用戶端與服務之間路由 gRPC 流量和進行負載平衡。這可允許順暢引入 gRPC 流量管理至架構,而不會改變客戶端或服務的任何底層基礎架構。gRPC 採用 HTTP/2 進行傳輸,並正在成為微服務架構服務間通訊的首選通訊協定。除 HTTP/2 的固有優點 (例如佔用更少網路空間、壓縮及雙向串流),其同時具高效二進制序列化及支援多種語言等功能,相較於 REST 等舊版通訊協定,其為更佳選項。

您可建立運用加密連線 (也稱為 SSL 卸載) 的 HTTPS 接聽程式。此特徵可在負載平衡器與啟動 SSL 或 TLS 會話的用戶端之間進行流量加密。Application Load Balancer 支援用戶端 TLS 會話終止。這讓您能夠將 TLS 終止任務卸載至負載平衡器,同時保留後端應用程式的來源 IP 地址。您可以為 TLS 接聽程式選擇預定義的安全策略,以滿足合規性和安全性標準。AWS Certificate Manager (ACM) 或 AWS Identity and Access Management (IAM) 可用於管理您的伺服器憑證。

您可以使用 SNI,透過單一 TLS 接聽程式為多個安全網站提供服務。若用戶端中的主機名與多個憑證相符,則負載平衡器會根據智慧選擇演算法選取要使用的最佳憑證。

粘性會話是將請求從相同用戶端路由到相同目標的機制。Application Load Balancer 同時支援基於持續時間的 Cookie 與基於應用程式的 Cookie。管理粘性會話的關鍵在於,確定時間長度以便負載平衡器持續路由使用者的請求到相同目標。粘性會話的啟用層級為目標群組。您可在所有目標群組組合基於持續時間的粘性、基於應用程式的粘性與無粘性。

Application Load Balancer 支援 VPC 中的原生網際網路協定版本 6 (IPv6)。這可讓用戶端透過 IPv4 或 IPv6 連接到 Application Load Balancer。

Application Load Balancer 會在進入負載平衡器的所有請求上插入新的自訂識別符 "X-Amzn-Trace-Id" HTTP 標頭。請求追蹤讓您能夠透過其唯一 ID,在請求通過構成您網站與分散式應用程式大部分流量的各項服務時追蹤請求。您可以使用這個唯一追蹤識別符,以個別要求的精細度找出應用程式堆疊中的任何效能或時間問題。

Application Load Balancer 可以將傳入請求從一個 URL 重新導向到其他 URL。這包含將 HTTP 請求重新導向至 HTTPS 請求的能力,讓您達成安全瀏覽的合規目標,同時獲得更佳的網站搜尋排名和 SSL/TLS 分數。您也可以使用重新導向將使用者傳送到不同的網站,例如,從舊版應用程式重新導向到新版。

Application Load Balancer 可控制應用程式要服務的用戶端請求。這可讓您使用 HTTP 錯誤回應代碼和負載平衡器本身的自訂錯誤訊息回應傳入請求。

WebSocket 可讓伺服器與最終使用者交換即時訊息,最終使用者無須向伺服器請求 (或輪詢) 更新。在長時間執行的 TCP 連接中,WebSocket 協定會在用戶端與伺服器之間提供雙向的通訊管道。

伺服器名稱指示 (SNI) 是 TLS 協定的延伸,用戶端可用它指定 TLS 信號交換開始時要連接的主機名稱。負載平衡器可透過相同的安全接聽程式出示多個憑證,使其能夠使用單一安全接聽程式支援多個安全網站。Application Load Balancer 還藉由 SNI 支援智慧憑證選擇演算法。如果用戶端指示的主機名稱符合多個憑證,負載平衡器將依據包含用戶端能力等多項因素,判斷要使用的最佳憑證。

您可以使用應用程式後端的 IP 地址做為目標,針對 AWS 或現場部署託管的任何應用程式進行負載平衡。這可以讓您針對在任何 IP 地址和執行個體上任何界面託管的應用程式後端進行負載平衡。在相同執行個體上託管的每個應用程式皆可擁有關聯的安全群組,且可以使用相同的連接埠。您也可以使用 IP 地址做為目標,針對在內部部署位置 (透過 Direct Connect 或 VPN 連接)、對等 VPC 及 EC2-Classic (使用 ClassicLink) 託管的應用程式進行負載平衡。跨 AWS 與內部部署資源進行負載平衡的功能可協助您遷移至雲端、升級至雲端,或容錯移轉至雲端。

Application Load Balancers 支援叫用 Lambda 函數來服務 HTTP(S) 請求,讓使用者能夠從任何 HTTP 用戶端存取無伺服器應用程式,包括 Web 瀏覽器。您可以將 Lambda 函數註冊為負載平衡器的目標,並運用內容型路由規則的支援,將請求路由至不同的 Lambda 函數。您可以使用 Application Load Balancer,做為使用伺服器和無伺服器運算之應用程式的通用 HTTP 端點。您可以使用 Lambda 函數來建置整個網站,或結合 EC2 執行個體、容器、內部部署伺服器和 Lambda 函數來建置應用程式。

如您的應用程式由多個個別服務組成,Application Load Balancer 可根據請求內容 (例如託管欄位、路徑 URL、HTTP header、HTTP 方法、查詢字符串或來源 IP 地址) 來路由請求至服務。

以託管為基礎的路由:您可以根據 HTTP 標頭的主機欄位路由用戶端請求,以便從相同的負載平衡器路由到多個網域。

以路徑為基礎的路由:您可以根據 HTTP header 的 URL 路徑路由用戶端請求。

以 HTTP header 為基礎的路由:您可以根據任何標準或自訂 HTTP 標頭的值,路由用戶端請求。

以 HTTP 方法為基礎的路由:您可以根據任何標準或自訂 HTTP 方法,路由用戶端請求。

以查詢字符串參數為基礎的路由:您可以根據查詢字串或查詢參數來路由用戶端要求。

以來源 IP 地址 CIDR 為基礎的路由:您可以根據用戶端請求的來源 IP 地址 CIDR,路由用戶端請求。

Application Load Balancer 利用在單一 Amazon EC2 執行個體的多個連接埠執行負載平衡,增強了對容器的支援。與 Amazon Elastic Container Service (ECS) 的深度整合可提供全受管容器產品。ECS 可讓您在 ECS 任務定義指定動態連接埠,當容器在 EC2 執行個體進行排程時給予未使用的連接埠。ECS 排程器會使用此連接埠自動將任務新增到負載平衡器。

您現在可以使用 AWS WAF 來保護 Application Load Balancer 上的 Web 應用程式。AWS WAF 是一種 Web 應用程式防火牆,可協助保護您的 Web 應用程式不受可能影響應用程式可用性、安全性危害、或耗用過多資源的常見 Web 入侵程式的侵擾。

Application Load Balancer 支援輪詢均衡負載平衡演算法。此外,Application Load Balancer 還支援慢啟動模式搭配輪詢均衡演算法,讓您在新增目標時不會產生無法負荷的大量請求。使用慢啟動模式,目標會先暖機,再根據您指定的準備期間接受合理的請求數。對於依賴快取且需要先暖機才能以優化效能回應請求的應用程式而言,慢啟動功能非常實用。

您可以將身分驗證功能從應用程式轉移到 Application Load Balancer。Application Load Balancer 可在使用者存取雲端應用程式時,安全地對其進行身分驗證。Application Load Balancer 與 Amazon Cognito 無縫整合,讓最終使用者能夠透過 SAML 或任何與 OpenID Connect 相容的身分供應商 (IdP),經由社交身分供應商 (例如,Google、Facebook 和 Amazon) 和企業身分供應商 (例如,Microsoft Active Directory) 進行身份驗證。如果您已經擁有與 OpenID Connect 相容的自訂 IdP 解決方案,Application Load Balancer 也可透過直接連接您的身分供應商,以驗證企業使用者的身分。