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

服务

利用 Amazon ECS,您可在 Amazon ECS 集群中同时运行和管理指定数量的任务定义实例。这称为服务。如果您的任何任务应该出于任何原因失败或停止,Amazon ECS 服务计划程序将启动另一个任务定义实例来替换它并根据所用的计划策略在服务中保留预期数量的任务。

除了在服务中保留预期数量的任务之外,您还可选择借助负载均衡器运行您的服务。负载均衡器将在与服务关联的各个任务间分配流量。

服务计划程序概念

如果服务中的某个任务停止,表明该任务已终止,一个新的任务已启动。此过程将继续,直到您的服务根据您指定的计划策略达到所需的运行任务数。

服务计划程序包括用来限制任务反复启动失败时重启任务的频率的逻辑。如果一个任务尚未进入 RUNNING 状态便停止 (取决于具有 startedAt 时间戳的任务),则服务计划程序开始以增量方式减缓启动尝试,并会发出一条服务事件消息。此行为可防止不必要的资源用于失败的任务上,从而让您有机会解决问题。服务更新后,服务计划程序恢复正常行为。有关更多信息,请参阅 服务限制逻辑服务事件消息

There are two service scheduler strategies available:

  • REPLICA—The replica scheduling strategy places and maintains the desired number of tasks across your cluster. By default, the service scheduler spreads tasks across Availability Zones. You can use task placement strategies and constraints to customize task placement decisions. For more information, see 副本.

  • DAEMON—The daemon scheduling strategy deploys exactly one task on each active container instance that meets all of the task placement constraints that you specify in your cluster. When using this strategy, there is no need to specify a desired number of tasks, a task placement strategy, or use Service Auto Scaling policies. For more information, see 守护程序.

    注意

    Fargate tasks do not support the DAEMON scheduling strategy.

守护程序

守护程序计划策略只在每个活动容器实例上部署一个任务,以满足群集中指定的所有任务放置约束。当使用此策略时,无需指定所需的任务数、任务放置策略或使用服务 Auto Scaling 策略。

守护程序服务计划程序不会将任何任务放置在具有 DRAINING 状态的实例上。如果容器实例转换为 DRAINING,则会停止其上的守护程序任务。它还监视何时将新容器实例添加到您的群集,并将守护程序任务添加到其中。

如果指定了 deploymentConfiguration,则最大百分比参数必须为 100maximumPercent 的守护程序服务的默认值为 100%。minimumHealthyPercent 的守护程序服务的默认值对于 AWS CLI、AWS 开发工具包和 API 为 0%,对于 AWS 管理控制台 为 50%。

注意

守护程序服务计划程序不支持使用 传统负载均衡器。

副本

副本计划策略在群集上放置并维护所需数量的任务。默认情况下,服务计划程序可在多个可用区之间分布任务。您可以使用任务放置策略和约束自定义任务放置决策。

当服务计划程序(使用 REPLICA 策略)启动新任务或停止运行使用 Fargate 启动类型的任务时,它会尝试在您的服务中的可用区之间保持平衡。

当服务计划程序(使用 REPLICA 策略)使用 EC2 启动类型启动新任务时,计划程序使用以下逻辑:

  • 确定您的集群中可支持您的服务的任务定义的容器实例(例如,它们有必需的 CPU、内存、端口和容器实例属性)。

  • 确定哪些容器实例满足为该服务定义的任何放置约束。

  • 如果已定义放置策略,请使用该策略来从剩余候选项中选择一个实例。

  • 如果尚未定义放置策略,请使用以下逻辑对群集中各个可用区的任务进行均衡:

    • 对有效容器实例进行排序,从而优先考虑在各自的可用区中具有此服务的运行任务数量最少的实例。例如,如果 A 区有一个正在运行的服务任务,B 区和 C 区都没有正在运行的服务任务,则认为在 B 区或 C 区中的有效容器实例中最适合放置任务。

    • 将新的服务任务放在最佳可用区中的有效容器实例上(基于之前的步骤),并优先使用具有此服务的最小数量的运行任务的容器实例。

当服务计划程序(使用 REPLICA 策略)停止运行任务时,它将尝试在集群的可用区之间保持均衡。对于使用 EC2 启动类型的任务,计划程序使用以下逻辑:

  • 如果已定义放置策略,请使用该策略来选择要终止的任务。例如,如果某服务已定义了可用区分布策略,则选择一项任务终止,以让剩下的任务保持最佳分布。

  • 如果尚未定义放置策略,请使用以下逻辑来为群集中的各个可用区保持均衡:

    • 对有效容器实例进行排序,从而优先考虑在各自的可用区中具有此服务的运行任务数量最多的实例。例如,如果 A 区有 1 个正在运行的服务任务,B 区和 C 区各有 2 个正在运行的服务任务,则认为 B 区或 C 区中的容器实例最适合终止任务。

    • 在最佳可用区中的容器实例上停止任务(基于之前的步骤),并优先使用具有此服务的最大数量的运行任务的容器实例。

附加服务概念

  • 您可选择借助负载均衡器运行您的服务。有关更多信息,请参阅 服务负载均衡

  • 您可选择为您的服务指定部署配置。在部署(通过更新任务定义或预期数量的服务触发)期间,服务计划程序将使用最小和最大正常运行百分比参数确定部署策略。有关更多信息,请参阅 服务定义参数

  • 您可以选择配置您的服务以使用 Amazon ECS service discovery。Service discovery 使用 Amazon Route 53 自动命名 API 来管理服务任务的 DNS 条目,使其可在 VPC 中供搜索。有关更多信息,请参阅 Service Discovery