

# 使用 Amazon ECS 的应用程序负载均衡器
<a name="alb"></a>

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

有关设置参数以加快部署速度的最佳实践的信息，请参阅：
+ [优化 Amazon ECS 的负载均衡器运行状况检查参数](load-balancer-healthcheck.md)
+ [优化 Amazon ECS 的负载均衡器连接耗尽参数](load-balancer-connection-draining.md)

将应用程序负载均衡器与 Amazon ECS 结合使用时，请考虑以下事项：
+ Amazon ECS 需要与服务相关的 IAM 角色，该角色提供在创建和停止任务时向负载均衡器注册和注销目标所需的权限。有关更多信息，请参阅 [对 Amazon ECS 使用服务相关角色](using-service-linked-roles.md)。
+ 对于仅 IPv6 配置中的服务，必须将应用程序负载均衡器的目标组 IP 地址类型设置为 `dualstack` 或 `dualstack-without-public-ipv4`。
+ 如果服务具有使用 `awsvpc` 网络模式的任务，在为服务创建目标组时，必须选择 `ip` 作为目标类型，而不是`instance`。这是因为使用 `awsvpc` 网络模式的任务与弹性网络接口而不是 Amazon EC2 实例关联。
+ 如果服务需要访问多个负载均衡端口（如某项 HTTP/HTTPS 服务需要端口 80 和端口 443），可以配置两个侦听器。一个侦听器负责将请求转发给服务的 HTTPS，另一个侦听器负责将 HTTP 请求重定向到适当的 HTTPS 端口。有关更多信息，请参阅《应用程序负载均衡器用户指南》**中的[为应用程序负载均衡器创建侦听器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-listener.html)。
+ 您的负载均衡器子网配置必须包含容器实例所在的所有可用区。
+ 创建服务后，无法从 AWS 管理控制台 更改负载均衡器配置。您只能使用 AWS Copilot、AWS CloudFormation、AWS CLI 或 SDK 来修改 `ECS` 滚动部署控制器的负载均衡器配置，而不是 AWS CodeDeploy 蓝/绿或外部控制器。当您添加、更新或删除负载均衡器配置时，Amazon ECS 会使用更新后的 Elastic Load Balancing 配置启动新部署。这将导致任务注册到负载均衡器或从负载均衡器取消注册。我们建议您在更新 Elastic Load Balancing 配置之前在测试环境中对此进行验证。有关如何修改配置的信息，请参阅 *Amazon Elastic Container Service API 参考*中的 [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)。
+ 如果服务任务未达到负载均衡器运行状况检查标准，则系统会停止并重启该任务。此过程将持续到您的服务达到预期的运行任务的数量。
+ 如果您的支持负载均衡器的服务出现问题，请参阅 [对 Amazon ECS 中的服务负载均衡器进行故障排除](troubleshoot-service-load-balancers.md)。
+ 使用 `instance` 目标类型时，任务和负载均衡器必须位于同一 VPC 中。使用 `ip` 目标类型时，支持跨 VPC 连接。
+ 为每项服务使用唯一的目标组。

  为多个服务使用同一个目标组可能会导致服务部署期间出现问题。
+ 您必须指定与应用程序负载均衡器关联的目标组。

有关如何创建应用程序负载均衡器的信息，请参阅*应用程序负载均衡器*中的[创建应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)