向服务注册多个目标组 - Amazon Elastic Container Service
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 } ]

多个目标组注意事项

在服务定义中指定多个目标组时,应考虑以下因素。

  • 对于使用 Application Application Load Balancer 或 Network Load Balancer 的服务,您无法将超过五个目标组附加到一个服务。

  • 仅在以下条件下支持在服务定义中指定多个目标组:

    • 该服务必须使用 或 应用程序负载均衡器 网络负载均衡器。

    • 该服务必须使用滚动更新 (ECS) 部署控制器类型。

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

  • 当您创建一个指定多个目标组的服务时,必须创建 Amazon ECS 服务相关角色。通过省略 API 请求中的 role 参数或 Role 中的 AWS CloudFormation. 属性来创建角色。有关更多信息,请参阅用于 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 } ]