我想使用 Application Load Balancer 為 Amazon Elastic Container Service (Amazon ECS) 設定動態連接埠對應,並在同一個執行個體上執行多個任務複本的目標群組。
簡短描述
您可以在建立新的Application Load Balancer 和新的 Amazon ECS 服務時,設定動態連接埠對應。或者,使用 AWS Command Line Interface (AWS CLI) 為現有的 Application Load Balancer 和 Amazon ECS 服務設定動態連接埠對應。
若要使用 Network Load Balancer 進行動態連接埠對應,請參閱使用適用於 Amazon ECS 的 Network Load Balancer。
**注意:**Application Load Balancer 使用動態連接埠對應,讓同一服務的多個任務能在同一個容器執行個體上執行。Classic Load Balancer 無法在同一個執行個體上執行一個任務的多個複本。如果您使用 Classic Load Balancer,則必須在容器執行個體上靜態對應連接埠號碼。
解決方法
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
使用新的 Application Load Balancer 為新的 Amazon ECS 服務設定動態連接埠對應
建立適用於 Amazon ECS 的 Application Load Balancer 和目標群組。
開啟 Amazon ECS 主控台,然後將您必須建立或更新的任務定義的主機連接埠設為 0。然後,設定容器連接埠對應任務定義參數,以符合您的應用程式。host 和 awsvpc 網路模式不支援動態主機連接埠對應。
新增規則,以允許從負載平衡器到容器執行個體的傳入流量。安全群組和網路存取控制清單 (網路 ACL) 必須允許流量通過臨時連接埠範圍,從您的 Application Load Balancer 傳輸到您的執行個體。如需臨時連接埠範圍的詳細資訊,請參閱 PortMapping。
然後,使用 Amazon ECS 主控台設定新的 Amazon ECS 服務,以使用您建立的 Application Load Balancer。
使用 AWS CLI 為現有 Application Load Balancer 和 Amazon ECS 服務設定動態連接埠對應
**重要:**如果您更新了服務任務定義,則您在建立服務時指定的容器名稱和容器連接埠必須保留在任務定義中。如需詳細資訊,請參閱服務負載平衡。
若要更新現有服務,請使用 update-service AWS CLI 命令變更設定,或為現有 Amazon ECS 服務新增 Application Load Balancer:
aws ecs update-service --cluster example-cluster-name --service example-service-name --load-balancers "{\"containerName\": \"example-container-name\", \"containerPort\": example-container-port-number, \"targetGroupArn\": \"example-target-group-arn\"}"
**注意:**將 example-cluster-name、example-service-name 和 example-container-name 替換為您值的名稱。將 example-container-port-number 替換為您的容器連接埠號碼,並將 example-target-group-arn 替換為您目標群組的 Amazon Resource Name (ARN)。
確認您是否正確設定了連接埠對應
請完成下列步驟:
- 開啟 Amazon Elastic Compute Cloud (Amazon EC2) console (Amazon Elastic Compute Cloud (Amazon EC2) 主控台)。
- 在導覽窗格中,選擇 Target Groups (目標群組)。
- 選取目標群體的超連結名稱。
- 在 Targets (目標) 索引標籤中,確認您所建立服務中的任務是否使用了正確的連接埠。
如果動態連接埠對應設定正確,那麼您可以看到目標群組中註冊的目標,以及為任務指派的連接埠。您也可以在以下臨時連接埠範圍的註冊目標中看到該任務:
相關資訊
什麼是 Elastic Load Balancing?