Amazon ECS
AWS Fargate 用户指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

向服务注册多个目标组

当您在服务定义中指定多个目标组时,Amazon ECS 服务可以为来自多个负载平衡器的流量提供服务并公开多个负载平衡端口。

目前,如果要创建一个指定多个目标组的服务,您必须使用 Amazon ECS API、开发工具包、AWS CLI 或 AWS CloudFormation 模板创建该服务。在创建服务后,您可以使用 AWS 管理控制台查看服务以及注册到服务的目标组。

可以使用以下格式在服务定义中指定多个目标组。

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"container_name", "containerPort":container_port }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"container_name", "containerPort":container_port } ]

多个目标组的注意事项

在服务定义中指定多个目标组时,应注意以下事项:

  • 仅在使用 应用程序负载均衡器 或 网络负载均衡器 负载均衡器类型时支持多个目标组。

  • 仅在服务使用滚动更新 (ECS) 部署控制器类型时支持多个目标组。如果您使用 CodeDeploy 或外部部署控制器,则不支持多个目标组。

  • 包含使用 Fargate 和 EC2 启动类型的任务的服务支持多个目标组。

  • 当您创建一个指定多个目标组的服务时,必须创建 Amazon ECS 服务相关角色。通过省略 API 请求中的 role 参数或 AWS CloudFormation 中的 Role 属性来创建角色。有关更多信息,请参阅对 Amazon ECS 使用服务相关角色

示例服务定义

下面是一些在服务定义中指定多个目标组的示例使用案例。

示例:为内部和外部流量使用独立的负载均衡器

在以下使用案例中,服务对相同的容器和端口使用两个独立的负载均衡器,一个用于内部流量,另一个用于面向 Internet 的流量。

"loadBalancers":[ //Internal ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"nginx", "containerPort":8080 }, //Internet-facing ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"nginx", "containerPort":8080 } ]

示例:从同一容器公开多个端口

在以下使用案例中,服务使用一个负载均衡器,但从同一容器公开多个端口。例如,Jenkins 容器可能会为 Jenkins Web 接口公开端口 8080,为 API 公开端口 50000。

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"jenkins", "containerPort":8080 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"jenkins", "containerPort":50000 } ]

示例:从多个容器公开端口

在以下使用案例中,服务使用一个负载均衡器和两个目标组从单独的容器公开端口。

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"webserver", "containerPort":80 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"database", "containerPort":3306 } ]