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

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

搭配 Amazon ECS 使用 Gateway Load Balancer

Gateway Load Balancer 在開放系統互相連線 (OSI) 模型的第三層,網路層運作。它會接聽所有連接埠的全部 IP 封包,並轉送流量至接聽程式規則中指定的目標群組。它使用 5 元組 (針對 TCP/UDP 流) 或 3 元組 (針對非 TCP/UDP 流) 維護特定目標應用裝置的流量黏性。例如,如果您的任務的容器定義指定 NGINX 容器連接埠使用連接埠 80,主機連接埠使用連接埠 0,則會從容器執行個體的暫時性連接埠範圍 (例如最新的 Amazon ECS 最佳化 AMI 為 32768 至 61000) 動態選擇主機連接埠。任務啟動時,NGINX 容器會以執行個體 ID 與連接埠組合向 Gateway Load Balancer 註冊,而流量將分佈到與該容器對應的執行個體 ID 與連接埠。這個動態映射可讓您在同一個容器執行個體中的單一服務擁有多項任務。如需詳細資訊,請參閱 Gateway Load Balancers 中的 What is a Gateway Load Balancer

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

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

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

  • 對於純 IPv6 組態的服務,必須將 Gateway Load Balancer 的目標群組 IP 位址類型設定為 dualstack

  • 對於任務使用 awsvpc 以外網路模式的服務,不支援 Gateway Load Balancer。

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

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

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

  • 當您使用以 IP 位址作為目標設定的 Gateway Load Balancer 時,請求會視為來自 Gateway Load Balancer 私有 IP 位址。也就是說,當您在目標安全群組中允許傳入請求與運作狀態檢查時,Gateway Load Balancer 後端的服務就會立即對外開放。

  • 對於 Fargate 任務,必須使用平台版本 1.4.0 (Linux) 或 1.0.0 (Windows)。

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

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

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

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

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

如需有關如何建立 Gateway Load Balancer 的資訊,請參閱 Gateway Load Balancers 中的 Getting started with Gateway Load Balancers

重要

若服務的任務定義採用 Fargate 所需的 awsvpc 網路模式,則您必須選擇 ip 作為目標類型,而不是選擇 instance。因為採用 awsvpc 網路模式的任務是與彈性網路界面相關聯,而非與 Amazon EC2 執行個體相關聯。

如果執行個體類型如下:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 和 T1,就不能以執行個體 ID 來登錄執行個體。您可以使用 IP 地址來登錄這些執行個體。