搭配 Amazon ECS 使用 Application Load Balancer - Amazon Elastic Container Service

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

搭配 Amazon ECS 使用 Application Load Balancer

Application Load Balancer 在應用程式層 (HTTP/HTTPS) 進行路由決策、支援以路徑為基礎的路由,並可將請求路由到您叢集中每個容器執行個體的一或多個連接埠。Application Load Balancer 支援動態主機連接埠映射。例如,如果您的任務的容器定義指定 NGINX 容器連接埠使用連接埠 80,主機連接埠使用連接埠 0,則會從容器執行個體的暫時性連接埠範圍 (例如最新的 Amazon ECS 最佳化 AMI 為 32768 至 61000) 動態選擇主機連接埠。任務啟動時,NGINX 容器會以執行個體 ID 與連接埠組合向 Application Load Balancer 註冊,而流量將分佈到與該容器對應的執行個體 ID 與連接埠。這個動態映射可讓您在同一個容器執行個體中的單一服務擁有多項任務。如需詳細資訊,請參閱 Application Load Balancer 使用者指南

如需有關設定參數以加速部署的最佳實務資訊,請參閱:

搭配 Amazon ECS 使用 Application Load Balancer 時,請考量下列事項:

  • Amazon ECS 需要服務連結 IAM 角色,該角色會在任務建立和停止時提供向您的負載平衡器註冊與取消註冊目標所需的許可。如需詳細資訊,請參閱使用 Amazon ECS 的服務連結角色

  • 對於純 IPv6 組態的服務,必須將 Application Load Balancer 的目標群組 IP 位址類型設定為 dualstackdualstack-without-public-ipv4

  • 對於任務使用 awsvpc 網路模式的服務,當您為服務建立目標群組時,必須選擇 ip 做為目標類型,而非 instance這是由於採用 awsvpc 網路模式的任務是與彈性網路介面相關聯,而非與 Amazon EC2 執行個體相關聯。

  • 如果服務需要存取多個負載平衡連接埠 (例如適用於 HTTP/HTTPS 服務的連接埠 80 與連接埠 443),您可以設定兩個接聽程式。一個接聽程式負責將請求轉送至服務的 HTTPS,另一個接聽程式負責將 HTTP 請求重新導向至適當的 HTTPS 連接埠。如需詳細資訊,請參閱 Application Load Balancer 使用者指南中的為您的 Application Load Balancer 建立接聽程式

  • 負載平衡器子網路組態必須包含您容器執行個體所在的所有可用區域。

  • 建立服務之後,負載平衡器組態無法從 AWS 管理主控台變更。您可以使用 AWS Copilot AWS CloudFormation AWS CLI 或 SDK,僅修改ECS滾動部署控制器的負載平衡器組態,而不是 AWS CodeDeploy 藍/綠或外部。當您新增、更新或移除負載平衡器組態時,Amazon ECS 會使用更新後的 Elastic Load Balancing 組態啟動新的部署。這會導致任務向負載平衡器註冊和取消註冊。我們建議您在更新 ELB 組態之前,先在測試環境中驗證此設定。如需有關如何修改組態的資訊,請參閱 Amazon Elastic Container Service API 參考 中的 UpdateService

  • 如果服務任務未能通過負載平衡器運作狀態檢查條件,則會停止並重新啟動任務。此程序會持續到您的服務達到所需的執行任務數量為止。

  • 如果您遇上啟用負載平衡器功能之服務的問題,請參閱對 Amazon ECS 中的服務負載平衡器進行疑難排解

  • 使用 instance 目標類型時,任務與負載平衡器必須位於同一 VPC 中。使用 ip 目標類型時,支援跨 VPC 連線。

  • 針對每項服務使用唯一目標群組。

    針對多項服務使用同一目標群組可能會在服務部署期間導致問題。

  • 您必須指定與 Application Load Balancer 相關聯的目標群組。

如需有關如何建立 Application Load Balancer 的資訊,請參閱 Application Load Balancers 中的 Create an Application Load Balancer