本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用適用於 Amazon ECS 的網路Load Balancer
Network Load Balancer 在傳輸層進行路由決策 (TCP/SSL)。每秒可以處理數百萬個請求。在負載平衡器收到連線後,會使用流程雜湊路由演算法從目標群組選取預設規則的目標。負載平衡器會嘗試開啟接聽程式設定中指定之連接埠上所選目標的 TCP 連線。負載平衡器會轉送此請求,且不會修改標頭。Network Load Balancer 支援動態主機連接埠映射。例如,如果您的任務的容器定義指定 NGINX 容器連接埠使用連接埠 80,主機連接埠使用連接埠 0,則會從容器執行個體的暫時性連接埠範圍 (例如最新的 Amazon ECS 最佳化 AMI 為 32768 至 61000) 動態選擇主機連接埠。啟動此任務時,NGINX 容器會以執行個體 ID 和連接埠組合在 Network Load Balancer 註冊,而流量將分散到與該容器對應的執行個體 ID 和連接埠。這個動態映射可讓您在同一個容器執行個體中的單一服務擁有多項任務。如需詳細資訊,請參閱 Network Load Balancer 使用者指南。
如需設定參數以加速部署的最佳實務相關資訊,請參閱:
搭配 Amazon ECS 使用 Network Load Balancer 時,請考慮下列事項:
-
Amazon ECS 需要服務連結 IAM 角色,該角色會在任務建立和停止時提供向您的負載平衡器註冊與取消註冊目標所需的許可。如需詳細資訊,請參閱使用 Amazon ECS 的服務連結角色。
-
您無法將超過五個目標群組連接至服務。
-
對於任務使用
awsvpc
網路模式的服務,當您為服務建立目標群組時,必須選擇ip
做為目標類型,而非instance
。這是由於採用awsvpc
網路模式的任務是與彈性網絡介面相關聯,而非與 Amazon EC2 執行個體相關聯。 -
負載平衡器子網路組態必須包含您容器執行個體所在的所有可用區域。
-
建立服務之後,負載平衡器組態無法從 AWS Management Console變更。您可以使用 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 地址設定為目標且用戶端 IP 保留關閉的 Gateway Load Balancer 時,請求會被視為來自 Gateway Load Balancer 私有 IP 地址。這表示一旦您允許目標安全群組中的傳入請求和運作狀態檢查,Gateway Load Balancer 後方的服務就會有效地向全世界開放。
-
對於 Fargate 任務,您必須使用平台版本
1.4.0
(Linux) 或1.0.0
(Windows)。 -
如果您遇上啟用負載平衡器功能之服務的問題,請參閱對 Amazon ECS 中的服務負載平衡器進行故障診斷。
-
您的任務和負載平衡器必須位於相同的 VPC 中。
-
Network Load Balancer 用戶端 IP 地址保留與 Fargate 目標相容。
-
為每個服務使用唯一的目標群組。
針對多個服務使用相同的目標群組,可能會導致服務部署期間發生問題。
如需如何建立 Network Load Balancer 的資訊,請參閱在 Network Load Balancer 中建立 Network Load Balancer
重要
若服務的任務定義是採用 Fargate 啟動類型所需的 awsvpc
網路模式,則您必須選擇 ip
做為目標類型,而不是選擇 instance
。因為採用 awsvpc
網路模式的任務是與彈性網路界面相關聯,而非與 Amazon EC2 執行個體相關聯。
如果執行個體類型如下:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 和 T1,就不能以執行個體 ID 來登錄執行個體。您可以使用 IP 地址來登錄這些執行個體。