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

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

Amazon EC2 Auto Scaling 的计划扩展

计划的扩展操作可帮助您根据可预测的负载变化来设置您自己的扩展计划。例如,假设您的 Web 应用程序的流量会在每周的星期三开始增加,并在星期四保持高流量状态,然后在星期五开始下降。您可以配置 Amazon EC2 Auto Scaling 在星期三增加容量并在星期五减少容量。

要使用计划的缩放,请创建计划操作。计划操作会作为日期和时间的函数自动执行。创建计划操作时,您可以指定扩展活动执行的时间以及扩展操作的所需大小、最小和最大大大小。您可以创建仅扩展一次或按重复计划扩展的计划操作。

Considerations

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

  • 计划操作将所需大小、最小和最大大大小设置为由计划操作在指定日期和时间指定的大小。请求可以选择只包含这些大小中的一个。例如,您可以创建仅指定所需容量的计划操作。但是,在某些情况下,您必须包括最小和最大大小,以确保您在操作中指定的新所需容量不超出这些限制。

  • 默认情况下,您设置的重复计划采用协调世界时 (UTC)。您可以更改时区以符合本地时区或您的网络中其他部分的时区。当您指定遵守夏令时 (DST) 的时区时,操作会自动调整为 DST。

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

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

  • 计划操作的执行时间一般为几秒钟。然而,该操作可能会比计划的开始时间延迟最多两分钟。因为 Auto Scaling 组中的计划操作是按照指定操作的顺序来执行的,所以计划开始时间彼此接近的操作可能需要更长时间才能执行。

定期计划

您可以创建按重复计划扩展 Auto Scaling 组的预先计划操作。

若要使用Amazon CLI或 SDK,请指定 cron 表达式和时区来描述何时重复执行该计划操作。您可以根据需要为开始时间、结束时间或两者指定日期和时间。

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

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

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

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

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

  • 开始时间和结束时间必须以 UTC 设置,当您使用Amazon CLI或开发工具包。

创建和管理计划操作(控制台)

使用本节中的过程可以使用Amazon Web Services Management Console。

如果您使用控制台创建计划操作并指定遵守夏令时 (DST) 的时区,则循环计划以及开始和结束时间都会自动调整 DST。

创建计划操作

完成以下过程可创建计划的操作以扩展 Auto Scaling 组。

为 Auto Scaling 组创建计划操作

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中 Auto Scaling 组旁的复选框。

    将在 Auto Scaling groups (Auto Scaling 组) 页面底部打开一个拆分窗格,其中显示有关所选组的信息。

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

  4. 输入名称,以获取计划操作。

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

  6. 适用于Recurrence下,选择一个可用选项。

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

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

      • 如果选择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 组的计划操作。

验证时间、日期和时区

要验证您的时间、日期和时区是否配置正确,请选中开始时间End Time, 和时区值在计划的操作自动扩展选项卡,适用于 Auto Scaling 组。

Amazon EC2 Auto Scaling 显示开始时间End Time,UTC 偏移量在指定的日期和时间生效。UTC 偏移量是本地时间与 UTC 之间的差值,以小时和分钟为单位。的值时区显示您请求的时区,例如America/New_York

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

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

更新计划操作

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

更新计划的操作

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选中 Auto Scaling 组旁的复选框。

    将在 Auto Scaling groups (Auto Scaling 组) 页面底部打开一个拆分窗格,其中显示有关所选组的信息。

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

  4. 选择 ActionsEdit

  5. 进行所需的更改,然后选择保存更改。

删除计划操作

当您不再需要计划操作时,可以将其删除。

删除计划操作

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/

  2. 选择 Auto Scaling 组。

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

  4. 依次选择 ActionsDelete

  5. 当系统提示进行确认时,选择 Yes, Delete

创建和管理计划操作 (Amazon CLI)

您可以创建并更新仅扩展一次或按重复计划扩展的计划操作,使用推出计划-更新组操作命令。

创建仅发生一次的计划操作

要在指定的日期和时间仅自动缩放 Auto Scaling 组一次,请使用--start-time "YYYY-MM-DDThh:mm:ssZ"选项。

示例:仅向外扩展一次

要在特定时间增加 Auto Scaling 组中正在运行的实例数量,请使用以下命令。

在指定的日期和时间--start-time(2021 年 3 月 31 日上午 8:00 UTC),如果组中当前包含少于 3 个实例,则它会扩展到 3 个实例。

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

示例:仅向内扩展一次

要在特定时间减少 Auto Scaling 组中正在运行的实例数量,请使用以下命令。

在指定的日期和时间--start-time(2021 年 3 月 31 日下午 4:00 UTC),如果组中当前包含多个实例,则该组缩减到 1 个实例。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T16:00:00Z" --desired-capacity 1

创建按循环计划运行的计划操作

若要按照重复的时间表来计划扩展,请使用--recurrence "cron expression"选项。

以下是指定 cron 表达式的计划操作的示例。

根据指定的计划(每天凌晨 9:00 (UTC)),如果组当前具有少于 3 个实例,则它会扩展到 3 个实例。如果组当前有 3 个以上的实例,则它可以扩展到 3 个实例。

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

创建指定时区的定期计划操作

默认情况下,计划操作设置为 UTC 时区。要指定不同的时区,请包含--time-zone选项,并指定 IANA 时区的规范名称 (America/New_York,例如)。有关更多信息,请参阅 。https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

以下是一个使用的示例--time-zone选项创建定期计划操作来扩展容量。

按照指定的计划(每周一至周五本地时间下午 6:00),如果组当前具有少于 2 个实例,则它将扩展到 2 个实例。如果组当前有 2 个以上的实例,则它可以扩展到 2 个实例。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 18 * * 1-5" --time-zone "America/New_York" \ --desired-capacity 2

描述计划操作

要描述 Auto Scaling 组的计划操作,请使用以下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 } ] }

删除计划操作

要删除计划操作,请使用以下delete-scheduled-action命令。

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

Limitations

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

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

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