选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用计划操作来覆盖 Amazon ECS 的预测值

聚焦模式
使用计划操作来覆盖 Amazon ECS 的预测值 - Amazon Elastic Container Service

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

例如,您可以创建一个任务数高于预测值的计划操作。在运行时,Amazon ECS 会更新服务中的最小任务数。由于预测性扩缩是针对任务数进行优化的,因此最小任务数高于预测值的计划操作将会被执行。这样可以防止任务数低于预期数量。要停止覆盖预测值,请使用第二个计划操作将最小任务数恢复为原始设置。

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

重要

本主题假设您尝试覆盖预测,以扩展到比预测更高的容量。如果需要在不受预测性扩缩策略干扰的情况下暂时减少任务数,则请改用仅预测模式。使用“仅预测”模式时,预测性扩缩将会继续生成预测,但不会自动增加任务数。然后,您可以监控资源利用率,并根据需要手动减少所需任务数。

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

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

  1. 检索预测

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

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

    若要使用 get-predictive-scaling-forecast AWS CLI 命令获取预测,请在命令中提供以下参数:

    • resource-id 参数中输入集群的名称。

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

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

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

    aws application-autoscaling get-predictive-scaling-forecast \ --service-namespace ecs \ --resource-id service/MyCluster/test \ --policy-name cpu40-predictive-scaling-policy \ --scalable-dimension ecs:service:DesiredCount \ --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" }

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

  2. 确定目标时间段

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

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

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

  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. Clusters(集群)页面上,选择集群。

  3. 在“集群详细信息”页面,找到服务部分,然后选择服务。

    此时系统会显示服务详细信息页面。

  4. 选择服务自动扩缩

    此时将显示策略页面。

  5. 选择计划操作,然后选择创建

    此时将显示“创建计划”操作页面。

  6. 对于 操作名称,输入唯一的名称。

  7. 对于时区,请选择时区。

    列出的所有时区均来自 IANA 时区数据库。有关详细信息,请参阅 List of tz database time zones

  8. 对于启动时间,输入操作启动的日期时间

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

  10. 对于任务调整下的“最小值”,输入一个小于或等于最大任务数的值。

  11. 选择创建计划操作

    此时将显示策略页面。

  12. 配置第二个计划操作,以在事件结束时将最小任务数恢复为原始设置。预测性扩缩只能在设置的最小值小于预测值时扩缩任务数。

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

要使用 AWS 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-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

将这些计划操作添加到 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 ECS 服务

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。