预测式扩展的工作方式 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

预测式扩展的工作方式

本主题说明了预测性扩展的工作原理,并描述了在创建预测性扩展策略时应考虑的事项。

工作方式

要使用预测扩展,请创建预测性扩展策略,指定要监控和分析的 CloudWatch 指标。要进行预测性扩展以开始预测 future 值,此指标必须包含至少 24 小时的数据。

创建策略后,预测性扩展将开始分析最多 14 天的指标数据,以确定模式。它使用此分析生成未来 48 小时容量需求的每小时预测。使用最新 CloudWatch 数据,预测每 6 小时更新一次。随着新数据的出现,预测性扩展能够不断提高未来预测的准确性。

首次启用预测缩放时,它将在仅限预测模式下运行。在此模式下,它会生成容量预测,但实际上不会根据这些预测扩展您的 Auto Scaling 组。这使您可以评估预测的准确性和适用性。您可以使用 GetPredictiveScalingForecast API 操作或查看预测数据 Amazon Web Services Management Console。

查看预测数据并决定根据该数据开始缩放后,将缩放策略切换到预测和缩放模式。在此模式下:

  • 如果预测预计负载会增加,Amazon EC2 Auto Scaling 将通过扩展来增加容量。

  • 如果预测预计负荷会减少,则不会缩减以减少容量。如果要移除不再需要的容量,则必须创建动态扩展策略。

默认情况下,Amazon EC2 Auto Scaling 会在每小时开始时根据该小时的预测对您的 Auto Scaling 组进行扩展。您可以选择使用 PutScalingPolicy API 操作中的SchedulingBufferTime属性或中的预启动实例设置来指定更早的开始时间。 Amazon Web Services Management Console这会导致 Amazon EC2 Auto Scaling 在预测的需求之前启动新实例,从而使它们有时间启动并准备好处理流量。

为了支持在预测需求之前启动新实例,我们强烈建议您为 Auto Scaling 组启用默认实例预热。这指定了横向扩展活动结束后的一段时间,在此期间,即使动态扩展策略指示应减少容量,Amazon EC2 Auto Scaling 也不会缩减规模。这可以帮助您确保新启动的实例在考虑进行缩减操作之前,有足够的时间开始为增加的流量提供服务。有关更多信息,请参阅 为 Auto Scaling 组设置原定设置实例预热

最大容量限制

Auto Scaling 组的最大容量设置限制了可以为该组启动的最大 EC2 实例数量。默认情况下,在设置扩展策略时,它们不能将容量增加到超过其最大容量的水平。

或者,如果预测容量接近或超过 Auto Scaling 组的最大容量,则可以允许自动增加该组的最大容量。要启用此行为,请使用 PutScalingPolicy API 操作中的MaxCapacityBreachBehaviorMaxCapacityBuffer属性或中的最大容量行为设置 Amazon Web Services Management Console。

警告

允许自动增加最大容量时要谨慎行事。如果不对增加的最大容量进行监控和管理,则启动的实例数量可能超过预期值。然后,增加的最大容量将变为 Auto Scaling 组新的正常最大容量,直到您手动对其进行更新。最大容量不会自动减少到原始的最大容量。

注意事项

  • 确认预测式扩展是否适合您的工作负载。如果工作负载显示特定于星期几的什么时间的重复负载模式,则工作负载非常适合预测式扩展。若要检查这一点,请在仅预测模式下配置预测性扩展策略,然后参考控制台中的建议。Amazon EC2 Auto Scaling 会根据对潜在策略性能的观察提供建议。在允许预测式扩展主动扩展应用程序之前,请评估预测及建议。

  • 预测式扩展至少需要 24 小时的历史数据才能开始预测。但是,如果历史数据跨越整整两周,预测会更有效。如果您通过创建新的 Auto Scaling 组并删除旧组来更新应用程序,则新的 Auto Scaling 组需要 24 小时的历史加载数据,然后预测式扩展才能再次开始生成预测。您可以使用自定义指标来聚合新旧自动扩缩组之间的指标。否则,您可能需要等待几天才能获得更准确的预测。

  • 选择一个负载指标,该指标应准确代表应用程序的满负荷,并且是应用程序中最需要扩展的方面。

  • 使用具有预测性扩展功能的动态扩展可以帮助您密切关注应用程序的需求曲线,在流量较低的时段向内扩展,在流量高于预期时向外扩展。当多个扩展策略处于活动状态时,每个策略将独立确定所需容量,并将所需容量设置为其中的最大容量。例如,如果要求 10 个实例保持目标跟踪扩展策略中的目标利用率,并且需要 8 个实例保持在预测式扩展策略中的目标利用率,则组的所需容量设置为 10。如果您不熟悉动态扩展,我们建议您使用目标跟踪扩展策略。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的动态扩缩

  • 预测性扩展的核心假设是 Auto Scaling 组是同质的,且所有实例的容量相等。如果您的组不是这样,预测的容量可能不准确。因此,在为混合实例组创建预测性扩展策略时要谨慎行事,因为可以配置容量不相等的不同类型的实例。以下是一些预测容量不准确的例子:

    • 您的预测性扩缩策略基于 CPU 利用率,但每个 Auto Scaling 实例上的 vCPU 数量因实例类型而异。

    • 您的预测性扩缩策略基于网络进入或网络外出,但每个 Auto Scaling 实例的网络带宽吞吐量因实例类型而异。例如,M5 和 M5n 实例类型相似,但 M5n 实例类型显著提高了网络吞吐量。

支持的区域

Amazon EC2 Auto Scaling 支持以下地区的预测性扩展策略 Amazon Web Services 区域:美国东部(弗吉尼亚北部)、美国东部(俄亥俄州)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、非洲(开普敦)、加拿大(中部)、欧洲(法兰克福)、欧洲(爱尔兰)、欧洲(伦敦)、欧洲(米兰)、欧洲(巴黎)、欧洲(斯德哥尔摩)、亚太地区(香港)、亚太地区(雅加达)、亚太地区(孟买)、亚太地区(大阪)、亚太地区(东京)、亚太地区(新加坡)、亚太地区(首尔)、亚太地区(悉尼)、中东(巴林)、中东(阿联酋)、南美洲(圣保罗)、中国(北京)、中国(宁夏)、 Amazon GovCloud (美国东部)和 Amazon GovCloud (美国西部)。