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.

服务 Auto Scaling

您可以选择将 Amazon ECS 服务配置为使用 服务 Auto Scaling 根据 CloudWatch 警报上调或下调其预期数量。服务 Auto Scaling 在支持 Amazon ECS 的所有区域中可用。

Amazon ECS 发布 CloudWatch 指标与服务的平均 CPU 和内存使用率。您可以使用这些服务利用率指标向上扩展您的服务以满足高峰期的大量需求,也可以向下扩展您的服务以在低利用率期间降低成本。有关更多信息,请参阅 服务利用率

您也可以使用由其他服务发布的 CloudWatch 指标或特定于您的应用程序的自定义指标。例如,Web 服务可增加基于 Elastic Load Balancing 指标的任务(例如 SurgeQueueLength)的数目,批处理作业可增加基于 Amazon SQS 指标的任务(例如 ApproximateNumberOfMessagesVisible)的数目。

您也可以在 ECS 集群上将 服务 Auto Scaling 与 Amazon EC2 的 Auto Scaling 结合使用以根据需要扩展您的集群和服务。有关更多信息,请参阅 教程:通过 CloudWatch 警报扩展容器实例

服务 Auto Scaling 必需的 IAM 权限

可将 Amazon ECS、CloudWatch 和 Application Auto Scaling API 组合使用以提供 服务 Auto Scaling。服务是使用 Amazon ECS 创建和更新的,警报是使用 CloudWatch 创建的,扩展策略是使用 Application Auto Scaling 创建的。IAM 用户必须先拥有这些服务的适当权限,然后才能在 AWS 管理控制台中或通过 AWS CLI 或开发工具包使用 服务 Auto Scaling。除了用于创建和更新服务的标准 IAM 权限之外,服务 Auto Scaling 还需要以下权限:

Copy
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:*", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm" ], "Resource": [ "*" ] } ] }

创建服务更新服务 IAM 策略示例说明了 IAM 用户在 AWS 管理控制台中使用 服务 Auto Scaling 所需的权限。

Application Auto Scaling 服务需要描述 ECS 服务和 CloudWatch 警报的权限,以及代表您修改服务的预期数量的权限。您必须为 ECS 服务创建 IAM 角色 (ecsAutoscaleRole) 以提供这些权限,然后将该角色与服务关联,以便它才能使用 Application Auto Scaling。如果一个 IAM 用户有权在 Amazon ECS 控制台中使用 服务 Auto Scaling,创建 IAM 角色,并将 IAM 角色策略附加到这些角色,则该用户可自动创建此角色(作为 Amazon ECS 控制台创建服务更新服务工作流程的一部分),然后将此角色用于任何其他服务(在控制台中或通过 CLI/开发工具包)。您也可以使用 Amazon ECS 服务 Auto Scaling IAM 角色中的过程来创建角色。

服务 Auto Scaling 概念

  • ECS 服务计划程序始终遵守预期数量,但只要您的服务拥有活动的扩展策略和警报,服务 Auto Scaling 就会更改您手动设置的预期数量。

  • 如果设置的服务的预期数量低于其最小容量值,并且警报触发了向外扩展活动,则 Application Auto Scaling 会将预期数量增至最小容量值,然后基于与警报关联的扩展策略继续按需向外扩展。但是,向内扩展活动将不会调整预期数量,因为它已低于最小容量值。

  • 如果设置的服务的预期数量高于其最大容量值,并且警报触发了向内扩展活动,则 Application Auto Scaling 会将预期数量缩减至到最大容量值,然后基于与警报关联的扩展策略继续按需向内扩展。但是,向外扩展活动将不会调整预期数量,因为它已高于最大容量值。

  • 在扩展活动期间,服务中实际运行的任务数是 服务 Auto Scaling 用作其起点的值(与预期数量相对),它是应有的处理容量。这可阻止无法满足的过度(失控)扩展,例如,在容器实例资源不足,无法放置其他任务的情况下。如果稍后提供容器实例容量,则正在等待的扩展活动将能够继续,随后其他扩展活动可在冷却期后继续。

Amazon ECS 控制台体验

Amazon ECS 控制台的服务创建和服务更新工作流程支持 服务 Auto Scaling。ECS 控制台处理 ecsAutoscaleRole 和策略创建,前提是使用控制台的 IAM 用户具有 服务 Auto Scaling 必需的 IAM 权限中描述的权限,并且他们能够创建 IAM 角色并为角色附加策略。

当您在控制台中将某项服务配置为使用 服务 Auto Scaling 时,您的服务将自动作为可扩展目标注册到 Application Auto Scaling,以便您能够配置向上扩展和向下扩展服务的扩展策略。您也可以创建和更新扩展策略以及在 Amazon ECS 控制台中触发这些策略的 CloudWatch 警报。

要创建使用 服务 Auto Scaling 的新 ECS 服务,请参阅创建服务

要将现有服务更新为使用 服务 Auto Scaling,请参阅更新服务

AWS CLI 和开发工具包体验

您可以使用 AWS CLI 或 AWS 开发工具包配置 服务 Auto Scaling,但必须遵循以下注意事项。