服务自动扩展 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

服务自动扩展

Automatic scaling 是指自动增加或减少 Amazon ECS 服务中所需任务数的功能。Amazon ECS 利用 Application Auto Scaling 服务来提供此功能。有关更多信息,请参阅 Application Auto Scaling 用户指南

Amazon ECS 会发布包含您的服务的平均 CPU 和内存使用率的 CloudWatch 指标。有关更多信息,请参阅服务利用率。您可以使用这些 CloudWatch 指标和其他指标来扩展服务(添加更多任务),以应对高峰时段的高需求,并扩展服务(运行更少的任务)以在低利用率时期降低成本。

Amazon ECS Service Auto Scaling 支持以下类型的自动扩展:

  • 目标跟踪扩展策略 – 根据特定指标的目标值,增加或减少服务运行的任务数。这与恒温器保持家里温度的方式类似。您选择一个温度,恒温器将完成所有其他工作。

  • 分步扩展策略 – 根据一组扩缩调整,增加或减少服务运行的任务数,这些调整称为分布调整,将根据警报严重程度发生变化。

  • 计划扩展— 根据日期和时间增加或减少服务运行的任务数。

注意事项

使用扩缩策略时,请注意以下事项:

  • Amazon ECS 以 1 分钟为 CloudWatch间隔向发送指标。在集群和服务将指标发送到之前,指标不可用 CloudWatch,并且您无法为不存在的指标创建 CloudWatch 警报。

  • 缩放策略支持冷却期。这是等待上一个扩展活动生效的秒数。

    • 对于扩展事件,目的是持续(但不过度)向外扩展。Service Auto Scaling 使用步进扩展策略成功向外扩展后,它将开始计算冷却时间。除非启动更大的横向扩展或冷却时间结束,否则扩缩策略不会再次增加所需容量。尽管此向外扩展冷却时间有效,但启动向外扩展活动所添加的容量将计算为下一个向外扩展活动所需容量的一部分。

    • 对于缩减事件,目的是以保守方式进行缩减以保护应用程序的可用性,因此在冷却时间过期之前阻止缩减活动。但是,如果另一个警报在横向缩减冷却时间内启动了横向扩展活动,Service Auto Scaling 将立即对目标进行横向扩展。在这种情况下,缩减冷却时间停止而不完成。

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

  • 如果将服务的所需数量设置为低于其最小容量值,并且警报启动了向外扩展活动,则 Service Auto Scaling 会根据与警报关联的扩展策略将所需计数向上扩展到最小容量值,然后根据需要继续扩展。但是,缩减活动将不会调整预期数量,因为它已低于最小容量值。

  • 如果将服务的所需数量设置为高于其最大容量值,并且警报启动活动缩放,则 Service Auto Scaling 会根据与警报关联的扩展策略将所需的计数扩展到最大容量值,然后根据需要继续缩小。但是,扩展活动将不会调整预期数量,因为它已高于最大容量值。

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

  • 如果您希望在没有要完成的工作时将任务计数扩展到零,请将最小容量设置为 0。对于目标跟踪扩展策略,当实际容量为 0 且度量指示存在工作负载需求时,Service Auto Scaling 会等待发送一个数据点,然后再扩展。在这种情况下,它将按可能的最小量扩展作为起点,然后根据实际运行的任务计数恢复扩展。

  • Application Auto Scaling 可在 Amazon ECS 部署正在进行时关闭横向缩减流程。但是,在部署过程中,除非暂停,否则将继续发生扩展进程。有关更多信息,请参阅服务自动扩展和部署

  • Amazon ECS 任务有数个 Application Auto Scaling 选项。目标跟踪是最易于使用的模式。有了它,您所需要做的就是为指标设置一个目标值,例如 CPU 平均利用率。然后,自动定标器会自动管理实现该值所需的任务数量。使用分步扩展,您可以更快地对需求变化做出反应,因为您可以定义扩展指标的特定阈值,以及在超过阈值时要添加或删除的任务数量。并且,更重要的是,您可以通过最大限度地减少突破阈值警报的时间来对需求变化做出快速反应。

服务自动扩展和部署

Application Auto Scaling 可在 Amazon ECS 部署正在进行时关闭横向缩减流程。但是,在部署过程中,除非暂停,否则将继续发生扩展进程。如果要在部署正在进行的过程中暂停向外扩展进程,请执行以下步骤。

  1. 调用describe-scalable-targets命令,在 Application Auto Scaling 中指定与可扩展目标关联的服务的资源 ID(示例:service/default/sample-webapp)。记录输出。调用下一个命令时,您将用到它。

  2. 调用register-scalable-target命令,指定资源 ID、命名空间和可扩展维度。指定 true 代表 DynamicScalingInSuspendedDynamicScalingOutSuspended

  3. 部署完成后,您可以调用register-scalable-target命令恢复扩展。

有关更多信息,请参阅暂停和恢复 Application Auto Scaling 的扩缩