Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

服务负载均衡

您可以选择将 Amazon ECS 服务配置为使用 Elastic Load Balancing 跨服务中的任务平均分配流量。

Elastic Load Balancing 提供两种类型的负载均衡器:应用程序负载均衡器 和 传统负载均衡器。

应用程序负载均衡器

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

 应用程序负载均衡器

传统负载均衡器

传统负载均衡器 在传输层 (TCP/SSL) 或应用程序层 (HTTP/HTTPS) 制定路由决策。传统负载均衡器 当前需要负载均衡器端口与容器实例端口间的固定关系。例如,可以将负载均衡器端口 80 映射到容器实例端口 3030,将负载均衡器端口 4040 映射到容器实例端口 4040。但是,无法将负载均衡器端口 80 映射到一个容器实例上的端口 3030 和另一个容器实例上的端口 4040。此静态映射需要您的集群至少具有与使用 传统负载均衡器 的单一服务的预期数量一样多的容器实例。有关更多信息,请参阅传统负载均衡器 用户指南

 传统负载均衡器

Amazon ECS 服务可使用任一类型的负载均衡器。不过,应用程序负载均衡器 提供了一些新功能,这使其非常适合用于 Amazon ECS 服务:

  • 应用程序负载均衡器 允许容器使用动态主机端口映射(以便每个容器实例允许来自同一服务的多个任务)。

  • 应用程序负载均衡器 支持基于路径的路由和优先级规则(以便多个服务可使用一个 应用程序负载均衡器 上的相同侦听器端口)。

建议您将 应用程序负载均衡器 用于 Amazon ECS 服务,以便能利用这些最新功能。有关 Elastic Load Balancing 以及两个负载均衡器类型之间的差异的更多信息,请参阅 Elastic Load Balancing 用户指南

注意

目前,Amazon ECS 服务只能指定一个负载均衡器或目标组。如果您的服务需要访问多个负载均衡端口 (例如某项 HTTP/HTTPS 服务需要端口 80 和端口 443),必须使用具有多个侦听器的 传统负载均衡器。使用 应用程序负载均衡器 可以将单一的 HTTP/HTTPS 服务分成两项服务,每项服务处理不同端口的请求。然后,每项服务可以使用单一 应用程序负载均衡器 之后的不同目标组。

负载均衡概念

  • 在一个任务定义中启动的所有容器始终放置在相同的容器实例上。对于 传统负载均衡器,您可以选择通过在服务定义中定义多个主机端口并将这些侦听器端口添加到负载均衡器,来将多个容器(位于相同的任务定义中)放在同一负载均衡器后面。例如,如果任务定义包含在容器实例上使用端口 3030 的 Elasticsearch 以及在容器实例上使用端口 4040 的 Logstash 和 Kibana,则同一负载均衡器可通过两个侦听器将流量路由到 Elasticsearch 和 Kibana。有关更多信息,请参阅传统负载均衡器 用户指南 中的针对 传统负载均衡器 的侦听器

    重要

    建议不要将多项服务连接到同一个 传统负载均衡器。由于整个容器实例是通过 传统负载均衡器(而不是主机和端口组合)注册和取消注册的,因此,此配置会在一个服务中的任务停止时导致出现问题,从而导致整个容器实例从 传统负载均衡器 取消注册,而相同容器实例上的来自不同服务的另一个任务仍将使用它。如果您要将多个服务连接到一个负载均衡器(例如,为了节省成本),建议您使用 应用程序负载均衡器。

  • 每项服务只能有一个负载均衡器或目标组。

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

  • 在创建服务后,在服务定义中指定的目标组 ARN 或负载均衡器名称、容器名称和容器端口是不可变的。您无法添加、删除或更改现有服务的负载均衡器配置。如果您更新服务的任务定义,则创建服务时指定的容器名称和容器端口必须保留在任务定义中。

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

  • 如果您的支持负载均衡器的服务出现问题,请参阅服务负载均衡器问题排查

本页内容: