本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用计划操作覆盖预测值
有时,您可能会获得有关未来应用程序需求的其他信息,预测计算无法考虑这些信息。例如,预测计算可能会低估即将举行的市场营销活动所需的容量。您可以使用计划操作在未来时段内临时覆盖预测。计划操作可以循环运行,也可以在出现一次性需求波动的特定日期和时间运行。
例如,您可以创建具有高于预测容量的最小容量的计划操作。运行时,Amazon EC2 Auto Scaling 会更新 Auto Scaling 组的最小容量。由于预测式扩展可针对容量进行优化,因此执行最小容量高于预测值的计划操作。这样可以防止容量低于预期。要停止覆盖预测,请使用第二个计划操作将最小容量恢复到其原始设置。
以下过程概述了在将来期间覆盖预测的步骤。
重要
本主题假设您尝试覆盖预测,以扩展到比预测更高的容量。如果您需要在不受预测性扩展策略干扰的情况下暂时减少容量,则请改用仅预测模式。在仅预测模式下,预测性扩展将继续生成预测,但不会自动增加容量。然后,您可以监控资源利用率,并根据需要手动缩减组大小。有关手动扩缩的更多信息,请参阅Amazon A EC2 uto Scaling 的手动扩展。
步骤 1:(可选)分析时间序列数据
首先分析预测时间序列数据。这是一个可选步骤,但如果您想了解预测的详细信息,它会很有帮助。
-
检索预测
创建预测后,您可以查询预测中的特定时间段。查询的目的是获得特定时间段的时间序列数据的完整视图。
您的查询最多可以包含两天的未来预测数据。如果您已经使用了一段时间预测式扩展,您还可以访问过去的预测数据。但是,开始和结束时间之间的最长持续时间为 30 天。
若要使用 get-predictive-scaling-forecast Amazon CLI 命令获取预测,请在命令中提供以下参数:
-
在
--auto-scaling-group-name
参数中输入 Auto Scaling 组的名称。 -
在
--policy-name
参数中输入策略的名称。 -
在
--start-time
参数中输入开始时间以仅返回在指定时间或之后的预测数据。 -
在
--end-time
参数中输入结束时间以仅返回在指定时间之前的预测数据。
aws autoscaling get-predictive-scaling-forecast --auto-scaling-group-name
my-asg
\ --policy-namecpu40-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" }
此响应包括两个预测:
LoadForecast
和CapacityForecast
。LoadForecast
显示每小时负载预测。CapacityForecast
显示每小时处理预测负载所需的容量的预测值,同时保持TargetValue
为 40.0(平均 CPU 利用率为 40%)。 -
-
确定目标时间段
确定应发生一次性需求波动的小时数。请记住,预测中显示的日期和时间以 UTC 为单位。
步骤 2:创建两个计划操作
接下来,在应用程序的负载高于预测负载的特定时间段内创建两个计划操作。例如,如果您的营销活动会在有限时间段内使网站的流量增加,则可计划一个一次性操作以在其启动时更新最小容量。然后,安排另一个操作,以便在事件结束时将最小容量返回到原始设置。
为一次性事件创建两个计划操作(控制台)
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中您的自动扩缩组旁边的复选框。
这时将在页面底部打开一个拆分窗格。
-
在 Automatic scaling(自动扩展)选项卡上的 Scheduled actions(计划操作)中,选择 Create scheduled action(创建计划操作)。
-
填写以下计划操作设置:
-
为计划操作输入名称。
-
对于最小值,输入 Auto Scaling 组的最小新容量。最小值必须小于或等于组的最大大小。如果最小值大于该组的最大大小,则必须更新最大值。
-
对于 Recurrence (重复次数),选择 Once (一次)。
-
对于时区,请选择时区。如果未选择任何时区,预设情况下使用
ETC/UTC
。 -
定义特定开始时间。
-
-
选择创建。
控制台将显示 Auto Scaling 组的计划操作。
-
配置第二个计划操作,以在事件结束时将最小容量返回原始设置。预测式扩展只能在设置最小值小于预测值时扩展容量。
为一次性事件创建两个计划操作 (Amazon CLI)
要使用 Amazon CLI 创建计划操作,请使用 put-scheduled-update-group-action 命令。
例如,让我们定义一个时间表,在 5 月 19 日下午 5:00 时保持最少三个实例的容量,持续 8 小时。以下命令显示如何实现此方案。
第一个 put-scheduled-update-group-action 命令指示 Amazon EC2 Auto Scaling 在 2021 年 5 月 19 日 UTC 下午 5:00 更新指定 Auto Scaling 组的最小容量。
aws autoscaling put-scheduled-update-group-action --scheduled-action-name
my-event-start
\ --auto-scaling-group-namemy-asg
--start-time "2021-05-19T17:00:00Z
" --minimum-capacity3
第二个命令指示 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-namemy-asg
--start-time "2021-05-20T01:00:00Z
" --minimum-capacity1
将这些计划操作添加到 Auto Scaling 组后,Amazon EC2 Auto Scaling 将执行以下操作:
-
2021 年 5 月 19 日下午 5:00,第一个计划的操作将运行。如果组中当前已少于三个实例,则该组会扩展到三个实例。在此期间和接下来的八小时内,如果预测容量高于实际容量,或者如果有动态扩展策略生效,Amazon EC2 Auto Scaling 可以继续向外扩展。
-
2021 年 5 月 20 日上午 1:00,将运行第二个计划的操作。这将在事件结束时将最小容量恢复为其原始设置。
根据重复性计划进行扩展
要覆盖每周相同时间段的预测,请创建两个计划操作,并使用 cron 表达式提供时间和日期逻辑。
此 cron 表达式格式包含五个空格分隔的字段:[Minute] [Hour] [Day_of_Month] [Month_of_Year] [Day_of_Week]。字段可以包含任何允许的值,包括特殊字符。
例如,下面的 cron 表达式在每周二上午 6:30 运行操作。星号用作通配符,以匹配字段的所有值。
30 6 * * 2
另请参阅
有关如何创建、列出、编辑和删除计划操作的更多信息,请参阅 Amazon A EC2 uto Scaling 的计划扩展。