我想使用应用程序负载均衡器为 Amazon Elastic Container Service (Amazon ECS) 和目标组设置动态端口映射,以便在一个实例上运行多个任务副本。
简短描述
您可以在创建新的应用程序负载均衡器和新的 Amazon ECS 服务时设置动态端口映射。或者,使用 AWS 命令行界面 (AWS CLI) 为现有应用程序负载均衡器和 Amazon ECS 服务设置动态端口映射。
要使用网络负载均衡器实现动态端口映射,请参阅对 Amazon ECS 使用网络负载均衡器。
**注意:**应用程序负载均衡器通过动态端口映射在同一个容器实例上运行同一服务中的多个任务。经典负载均衡器不会在同一个实例上运行任务的多个副本。如果您使用经典负载均衡器,则必须在容器实例上静态映射端口号。
解决方法
**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
使用新的应用程序负载均衡器为新的 Amazon ECS 服务设置动态端口映射
为 Amazon ECS 创建一个应用程序负载均衡器和一个目标组。
打开 Amazon ECS 控制台,然后将必须创建或更新的任务定义的主机端口设置为 0。然后,配置容器端口映射任务定义参数以匹配您的应用程序。主机和 awsvpc 网络模式不支持动态主机端口映射。
添加一条规则,以允许来自负载均衡器的入站流量流向容器实例。安全组和网络访问控制列表(网络 ACL)必须允许来自应用程序负载均衡器的流量通过临时端口范围流向您的实例。有关临时端口范围的详细信息,请参阅 PortMapping。
然后,使用 Amazon ECS 控制台将您的新 Amazon ECS 服务配置为使用您创建的应用程序负载均衡器。
使用 AWS CLI 为现有应用程序负载均衡器和 Amazon ECS 服务设置动态端口映射
**重要事项:**如果更新服务任务定义,则在创建服务时指定的容器名称和容器端口必须保留在任务定义中。有关详细信息,请参阅服务负载均衡。
要更新现有服务,请使用 update-service AWS CLI 命令更改配置,或为现有 Amazon ECS 服务添加应用程序负载均衡器:
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 资源名称 (ARN)。
验证您是否正确配置了端口映射
完成以下步骤:
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 在导航窗格中,选择 Target Groups(目标组)。
- 选择目标组的超链接名称。
- 在 Targets(目标)选项卡中,验证您创建的服务中的任务是否使用正确的端口。
如果动态端口映射设置正确,您将看到目标组中的已注册目标以及为任务分配的端口。您还可以看到以下临时端口范围的已注册目标中的任务:
相关信息
什么是弹性负载均衡?