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

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

使用计划活动覆盖预测值

有时,您可能会获得有关未来应用程序需求的其他信息,预测计算无法考虑这些信息。例如,预测计算可能会低估即将举行的市场营销活动所需的容量。您可以使用计划操作在未来时段内临时覆盖预测。计划活动可以循环运行,也可以在出现一次性需求波动的特定日期和时间运行。

例如,您可以创建具有高于预测容量的最小容量的计划操作。在运行时,Amazon EC2 Auto Scaling 会更新 Auto Scaling 组的最小容量。由于预测扩展可针对容量进行优化,因此执行最小容量高于预测值的计划操作。这样可以防止容量低于预期。要停止覆盖预测,请使用第二个计划操作将最小容量恢复到其原始设置。

以下过程概述了在将来时间段内覆盖预测的步骤。

第 1 步:(可选)分析时间序列数据

首先分析预测时间序列数据。这是一个可选步骤,但如果您想了解预测的详细信息,它会很有帮助。

  1. 检索预测

    创建预测后,您可以查询预测中的特定时间段。查询的目的是获得特定时间段的时间序列数据的完整视图。

    您的查询最多可以包含两天的未来预测数据。如果您已经使用了一段时间预测扩展,您还可以访问过去的预测数据。但是,开始和结束时间之间的最长持续时间为 30 天。

    若要使用获取预测-缩放预测 Amazon CLI命令,请在命令中提供以下参数:

    • 输入 Auto Scaling 组的名称,在--auto-scaling-group-name参数。

    • 输入策略的名称在--policy-name参数。

    • 输入开始时间在--start-time参数以仅返回在指定时间或之后的预测数据。

    • 输入结束时间在--end-time参数以仅返回指定时间之前的预测数据。

    aws autoscaling get-predictive-scaling-forecast --auto-scaling-group-name my-asg \ --policy-name cpu40-predictive-scaling-policy \ --start-time "2021-05-19T17:00:00Z" \ --end-time "2021-05-19T23:00:00Z"

    如果成功,该命令将返回类似于以下示例的数据。

    { "LoadForecast": [ { "Timestamps": [ "2021-05-19T17:00:00+00:00", "2021-05-19T18:00:00+00:00", "2021-05-19T19:00:00+00:00", "2021-05-19T20:00:00+00:00", "2021-05-19T21:00:00+00:00", "2021-05-19T22:00:00+00:00", "2021-05-19T23:00:00+00:00" ], "Values": [ 153.0655799339254, 128.8288551285919, 107.1179447150675, 197.3601844551528, 626.4039934516954, 596.9441277518481, 677.9675713779869 ], "MetricSpecification": { "TargetValue": 40.0, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } } ], "CapacityForecast": { "Timestamps": [ "2021-05-19T17:00:00+00:00", "2021-05-19T18:00:00+00:00", "2021-05-19T19:00:00+00:00", "2021-05-19T20:00:00+00:00", "2021-05-19T21:00:00+00:00", "2021-05-19T22:00:00+00:00", "2021-05-19T23:00:00+00:00" ], "Values": [ 2.0, 2.0, 2.0, 2.0, 4.0, 4.0, 4.0 ] }, "UpdateTime": "2021-05-19T01:52:50.118000+00:00" }

    此响应包含两个预测:LoadForecastCapacityForecast.LoadForecast显示每小时负载预测。CapacityForecast显示每小时处理预测负载所需的容量的预测值,同时维护TargetValue为 40.0(平均 CPU 利用率为 40%)。

  2. 确定目标时间段

    确定应发生一次性需求波动的小时数。请记住,预测中显示的日期和时间以 UTC 为单位。

第 2 步:创建两个计划操作

接下来,在应用程序的负载高于预测负载的特定时间段内创建两个计划操作。例如,如果您的营销活动会在有限时间段内使网站的流量增加,则可计划一个一次性操作以便在活动开始时更新最小容量。然后,安排另一个操作,以便在事件结束时将最小容量返回到原始设置。

为一次性事件创建两个计划操作(控制台)

  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. 填写以下计划操作设置:

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

    2. 适用于最小值中,输入 Auto Scaling 组的新的最小容量。这些区域有:最小值必须小于或等于组的最大容量。如果您的最小值大于组的最大大小,则必须更新最大值.

    3. 对于 Recurrence (重复次数),选择 Once (一次)

    4. 适用于时区中,选择时区。如果未选择任何时区,ETC/UTC默认使用 。

    5. 定义特定开始时间.

  5. 选择创建

    控制台显示 Auto Scaling 组的计划操作。

  6. 配置第二个计划操作,以便在事件结束时将最小容量返回原始设置。预测扩展只能在设置最小值小于预测值。

要为一次性事件创建两个计划操作 (Amazon CLI)

使用Amazon CLI创建计划操作,请使用put-caling 组操作命令。

例如,让我们定义一个时间表,在 5 月 19 日下午 5:00 时保持最少三个实例的容量,持续 8 小时。以下命令显示如何实现此方案。

第一个put-caling 组操作命令指示 Amazon EC2 Auto Scaling 在 2021 年 5 月 19 日 UTC 下午 5:00 更新指定自动扩展组的最小容量。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-start \ --auto-scaling-group-name my-asg --start-time "2021-05-19T17:00:00Z" --minimum-capacity 3

第二个命令指示 Amazon EC2 Auto Scaling 将组的最小容量设置为 2021 年 5 月 20 日 UTC 凌晨 1:00。

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-end \ --auto-scaling-group-name my-asg --start-time "2021-05-20T01:00:00Z" --minimum-capacity 1

将这些计划操作添加到自动扩展组后,Amazon EC2 自动扩展将执行以下操作:

  • 2021 年 5 月 19 日下午 5:00,第一个计划的操作将运行。如果组当前具有少于三个实例,则该组将扩展到三个实例。在此期间和接下来的八小时内,如果预测容量高于实际容量,或者如果有动态扩展策略生效,Amazon EC2 Auto Scaling 可以继续横向扩展。

  • 2021 年 5 月 20 日上午 1:00,将运行第二个计划的操作。这将在事件结束时将最小容量恢复为其原始设置。

根据重复性计划进行扩展

要覆盖每周相同时间段的预测,请创建两个计划操作,并使用 cron 表达式提供时间和日期逻辑。

cron 表达式格式由以空格分隔的五个字段组成:[分钟] [小时] [月的日期] [月] [月] [月]。字段可以包含任何允许的值,包括特殊字符。

例如,以下 cron 表达式在每周二的早上 6:30 运行操作。星号用作通配符,以匹配字段的所有值。

30 6 * * 2

另请参阅

有关如何创建、列出、编辑和删除计划操作的更多信息,请参阅Amazon EC2 Auto Scaling 的计划扩展.