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 过程。这有助于防止计划操作处于活动状态,而无需将其删除。然后,当您想要再次使用时,您可以恢复计划的扩展。有关更多信息,请参见 暂停和恢复 Auto Scaling 组的进程

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

创建计划的操作

要为您的 Auto Scaling 组创建计划操作,请使用以下方法之一:

Console
创建计划的操作
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选中您的自动扩缩组旁边的复选框。

    这时将在页面底部打开一个拆分窗格。

  3. Automatic scaling(自动扩展)选项卡上的 Scheduled actions(计划操作)中,选择 Create scheduled action(创建计划操作)。

  4. 为计划操作输入名称

  5. 适用于所需容量最小值最大值中,选择新的所需组容量以及新的最小和最大大小限制。所需容量必须大于等于组的最小大小,小于等于组的最大大小。

  6. 对于 Recurrence(循环),请选择下列可用选项之一。

    • 如果您想要按循环计划进行扩展,请选择 Amazon EC2 Auto Scaling 运行计划操作的频率。

      • 如果您选择以 Every 开头的选项,则将为您创建 Cron 表达式。

      • 如果您选择 Cron,请输入 Cron 表达式,此表达式指定了执行操作的时间。

    • 如果只想缩放一次,请选择 Once(一次)。

  7. 对于时区,请选择时区。默认值为 Etc/UTC

    列出的所有时区均来自 IANA 时区数据库。欲了解更多信息,请参阅 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

  8. 定义日期和时间特定开始时间

    • 如果您选择了循环计划,则开始时间将定义循环系列中第一个计划操作的运行时间。

    • 如果您选择了 Once 作为重复,则开始时间定义运行计划操作的日期和时间。

  9. (可选)对于循环计划,您可以通过选择设置 End Time,然后选择一个日期和时间 End Time

  10. 选择创建。控制台将显示 Auto Scaling 组的计划操作。

Amazon CLI

要创建计划操作,您可以使用以下示例命令之一。将每个用户输入占位符替换为您自己的信息。

示例:仅扩展一次

使用以下带有--start-time "YYYY-MM-DDThh:mm:ssZ"--desired-capacity选项的 put-scheduled-update-group-action 命令。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T08:00:00Z" --desired-capacity 3
示例:按定期计划安排扩展

使用以下带有--recurrence "cron expression"--desired-capacity选项的 put-scheduled-update-group-action 命令。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 9 * * *" --desired-capacity 3

默认情况下,Amazon EC2 Auto Scaling 会根据世界标准时间时区运行指定的重复计划。要指定不同的时区,请包括--time-zone选项和 IANA 时区的名称,如下例所示。

--time-zone "America/New_York"

欲了解更多信息,请参阅 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

查看计划操作详情

要查看 Auto Scaling 组即将执行的计划操作的详细信息,请使用以下方法之一:

Console
查看计划操作的详细信息
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选择您的 Auto Scaling 组。

  3. 自动扩展选项卡的计划操作部分,您可以查看即将进行的计划操作。

请注意,控制台以您的当地时间显示开始时间结束时间的值,UTC 偏移量在指定的日期和时间生效。UTC 偏移量是本地时间与 UTC 之间的差值,以小时和分钟为单位。时区的值显示您请求的时区,例如 America/New_York

Amazon CLI

使用以下 describe-scheduled-actions 命令。

aws autoscaling describe-scheduled-actions --auto-scaling-group-name my-asg

如果成功,该命令返回类似以下内容的输出。

{ "ScheduledUpdateGroupActions": [ { "AutoScalingGroupName": "my-asg", "ScheduledActionName": "my-recurring-action", "Recurrence": "30 0 1 1,6,12 *", "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-asg:scheduledActionName/my-recurring-action", "StartTime": "2020-12-01T00:30:00Z", "Time": "2020-12-01T00:30:00Z", "MinSize": 1, "MaxSize": 6, "DesiredCapacity": 4 } ] }

验证扩缩活动

要验证与计划扩缩相关联的扩缩活动,请参阅 验证 Auto Scaling 组的扩缩活动

删除计划的操作

要删除计划操作,请使用以下方法之一:

Console
删除计划操作
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选择您的 Auto Scaling 组。

  3. Automatic scaling(自动扩展)选项卡上的 Scheduled actions(计划操作)中,选择计划操作。

  4. 依次选择 Actions(操作)和 Delete(删除)。

  5. 当系统提示进行确认时,选择 Yes, Delete(是,删除)。

Amazon CLI

使用以下 delete-scheduled-action 命令。

aws autoscaling delete-scheduled-action --auto-scaling-group-name my-asg \ --scheduled-action-name my-recurring-action

限制

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

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

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