使用 Amazon ECS 的应用程序负载均衡器 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon ECS 的应用程序负载均衡器

Application Load Balancer 在应用程序层 (HTTP/HTTPS) 作出路由决策,支持基于路径的路由,并且可以将请求路由到您的群集中每个容器实例上的一个或多个端口。Application Load Balancer 支持动态主机端口映射。例如,如果任务的容器定义指定端口 80 为 NGINX 容器端口,并指定端口 0 为主机端口,则从容器实例的临时端口范围(例如,在最新的经 Amazon ECS 优化的 AMI 上,为 32768 到 61000)中动态选择主机端口。在任务负载均衡器时,NGINX 容器将作为实例 ID 和端口组合注册到应用程序负载均衡器,并且流量将分配到与该容器对应的实例 ID 和端口。此动态映射可让您在同一容器实例上拥有来自单个服务的多个任务。有关更多信息,请参阅 Application Load Balancer 用户指南

有关设置参数以加快部署速度的最佳实践的信息,请参阅:

将应用程序负载均衡器与 Amazon ECS 结合使用时,请考虑以下事项:

  • Amazon ECS 需要与服务相关的 IAM 角色,该角色提供在创建和停止任务时向负载均衡器注册和注销目标所需的权限。有关更多信息,请参阅 对 Amazon ECS 使用服务相关角色

  • 目标组必须将 IP 地址类型设置为 IPv4。

  • 如果服务具有使用 awsvpc 网络模式的任务,在为服务创建目标组时,必须选择 ip 作为目标类型,而不是instance这是因为使用 awsvpc 网络模式的任务与弹性网络接口而不是 Amazon EC2 实例关联。

  • 如果服务需要访问多个负载均衡端口(如某项 HTTP/HTTPS 服务需要端口 80 和端口 443),可以配置两个侦听器。一个侦听器负责将请求转发给服务的 HTTPS,另一个侦听器负责将 HTTP 请求重定向到适当的 HTTPS 端口。有关更多信息,请参阅 Application Load Balancers 用户指南中的创建Application Load Balancer 的侦听器

  • 您的负载均衡器子网配置必须包含容器实例所在的所有可用区。

  • 创建服务后,无法从 Amazon Web Services Management Console 更改负载均衡器配置。您只能使用 Amazon Copilot、Amazon CloudFormation、Amazon CLI 或 SDK 来修改 ECS 滚动部署控制器的负载均衡器配置,而不是 Amazon CodeDeploy 蓝/绿或外部控制器。当您添加、更新或删除负载均衡器配置时,Amazon ECS 会使用更新后的 Elastic Load Balancing 配置启动新部署。这将导致任务注册到负载均衡器或从负载均衡器取消注册。我们建议您在更新 Elastic Load Balancing 配置之前在测试环境中对此进行验证。有关如何修改配置的信息,请参阅 Amazon Elastic Container Service API 参考中的 UpdateService

  • 如果服务任务未达到负载均衡器运行状况检查标准,则系统会停止并重启该任务。此过程将持续到您的服务达到预期的运行任务的数量。

  • 如果您的支持负载均衡器的服务出现问题,请参阅 对 Amazon ECS 中的服务负载均衡器进行故障排除

  • 您的任务和负载均衡器必须都在相同 VPC 中。

  • 为每项服务使用唯一的目标组。

    为多个服务使用同一个目标组可能会导致服务部署期间出现问题。

有关如何创建应用程序负载均衡器的信息,请参阅应用程序负载均衡器中的创建应用程序负载均衡器