Amazon EC2 Auto Scaling 的计划扩缩 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EC2 Auto Scaling 的计划扩缩

通过计划扩展,您可以根据可预测的负载变化为应用程序设置自动扩展。您可以创建计划操作,在特定时间增加或减少小组的所需容量。

例如,您会遇到每周定期的流量模式,即负载在周中增加,而在接近周末时会下降。您可以在 Amazon EC2 Auto Scaling 中配置符合以下模式的扩展计划:

  • 周三上午,一项计划操作通过增加 Auto Scaling 组先前设置的所需容量来增加容量。

  • 周五晚上,另一项计划操作会减少 Auto Scaling 组先前设定的所需容量,从而减少容量。

利用这些计划的扩缩操作,您可以优化成本和性能。您的应用程序有足够的容量来处理周中的流量高峰,但不会在其他时间过度配置不需要的容量。

您可以将计划扩展和扩展策略结合使用,以获得两种扩展方法的好处。运行计划的扩缩操作后,扩缩策略可以继续决定是否进一步扩缩容量。这有助于确保您有足够的容量来处理应用程序的负载。当您的应用程序扩展以满足需求时,当前容量必须在计划操作设置的最小容量和最大容量范围内。

计划扩缩的工作原理

要使用计划扩展,请创建计划操作,告知 Amazon EC2 Auto Scaling 在特定时间执行扩展活动。创建计划操作时,您可以指定 Auto Scaling 组、扩展活动何时发生、新的所需容量以及新的最低容量和新的最大容量(可选)。您可以创建仅扩展一次或按重复计划扩展的计划操作。

在指定时间,Amazon EC2 Auto Scaling 会根据新的容量值进行扩展,方法是将当前容量与指定的所需容量进行比较。

  • 如果当前容量小于指定的所需容量,Amazon EC2 Auto Scaling 将扩展或添加实例到指定的所需容量。

  • 如果当前容量大于指定的所需容量,Amazon EC2 Auto Scaling 将缩减或移除实例到指定的所需容量。

计划操作将在指定的日期和时间设置组的所需容量、最小容量和最大容量。一次只能为其中一个容量创建计划操作,例如所需容量。但是,在某些情况下,您必须包括最小和最大容量,以确保您在操作中指定的所需容量不会超出这些限制。

定期安排

要使用 Amazon CLI 或 SDK 创建定期计划,请指定 cron 表达式和时区来描述该计划操作何时重演。您可以选择指定开始时间和/或结束时间的日期和时间。

要使用创建重复计划 Amazon Web Services Management Console,请指定计划操作的重复模式、时区、开始时间和可选的结束时间。所有重复模式选项都基于 cron 表达式。或者,您可以编写您自己的 Cron 表达式。

受支持的 cron 表达式格式由用空格分隔的五个字段组成:[Minute] [Hour] [Day_of_Month] [Month_of_Year] [Day_of_Week]。例如,Cron 表达式 30 6 * * 2 配置每周二的早上 6:30 再执行的计划操作。星号用作通配符,以匹配字段的所有值。有关 cron 表达式的其他示例,请参阅 https://crontab.guru/examples.html。有关以此格式编写您自己的 cron 表达式的信息,请参阅 Crontab

仔细选择您的开始时间和结束时间。记住以下内容:

  • 如果您指定开始时间,Amazon EC2 Auto Scaling 将在该时间执行操作,然后根据重复计划执行操作。

  • 如果指定结束时间,则操作在此时间之后停止重复。在到达计划操作的结束时间后,它不会保留在您的账户中。

  • 使用 Amazon CLI 或 SDK 时,必须以 UTC 格式设置开始时间和结束时间。

时区

预设情况下,您设置的重复计划采用协调世界时 (UTC)。您可以更改时间以符合本地时区或您的网络中其他部分的时区。如果您指定的时区遵守 Daylight Saving Time (DST),它会自动调整 DST。

有效值是互联网号码分配机构 (IANA) 时区数据库中时区的规范名称。例如,美国东部时间在规范上被标识为。America/New_York欲了解更多信息,请参阅 https://www.iana.org/time-zones

基于位置的时区,例如根据夏令时America/New_York自动调整。但是,基于 UTC 的时区(如 Etc/UTC 是绝对时间,不会针对 DST 进行调整。

例如对于您有一个定期计划,其时区为 America/New_York。第一个扩缩操作发生在 America/New_York DST 开始之前的时区。下一个扩缩操作发生在 America/New_York DST 开始之后的时区。第一个动作从当地时间 UTC-5 上午 8 点开始,而第二个时间从当地时间 UTC-4 凌晨 8 点开始。

如果您使用创建计划操作 Amazon Web Services Management Console 并指定遵守 DST 的时区,则循环计划以及开始和结束时间都会自动调整 DST。

注意事项

创建计划的操作时,请记住以下内容:

  • 可以保证同组内计划操作的执行顺序正确,但不保证跨组的计划操作的执行顺序正确。

  • 计划操作通常在几秒钟内运行。然而,该操作可能会比计划的开始时间延迟最多两分钟。因为系统将按照计划操作的顺序来执行 Auto Scaling 组内的操作,所以计划开始时间彼此接近的计划操作可能需要更长时间才能执行。

  • 您可以暂时关闭 Auto Scaling 组的计划扩展,方法是暂停 ScheduledActions 过程。这有助于防止计划操作处于活动状态,而无需将其删除。然后,当您想要再次使用时,您可以恢复计划的扩展。有关更多信息,请参阅 暂停和恢复 Amazon EC2 Auto Scaling 流程

  • 创建计划操作后,您可以更新除名称之外的任何设置。

限制

  • 每个 Auto Scaling 组,计划操作的名称必须是唯一的。

  • 计划的操作必须具有唯一时间值。如果您尝试计划在已计划另一个扩展活动的时间进行活动,则该调用将被拒绝,并返回一个错误消息,指示已存在已存在已计划启动时间的计划操作。

  • 您最多可以为每个 Auto Scaling 组创建 125 个计划的操作。