Amazon EC2 Auto Scaling 的缩放冷却时间 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EC2 Auto Scaling 的缩放冷却时间

在您的 Auto Scaling 组启动或终止实例后,它首先等待冷却时间结束,然后才能启动简单扩缩策略启动的任何扩缩活动。冷却时间的用途是防止 Auto Scaling 组在先前的活动产生明显的作用之前启动或终止其他实例。

重要

作为最佳实践,我们建议您不要使用简单扩缩策略和扩缩冷却。

在大多数情况下,目标跟踪扩缩策略或步进扩缩策略更能提升扩缩性能。对于随着扩缩指标值的减小或增加而按比例更改 Auto Scaling 组大小的扩缩策略,我们建议采用目标跟踪而不是简单扩缩或分步扩缩。

例如,假设一个有关 CPU 利用率的简单扩缩策略建议启动两个实例。Amazon EC2 Auto Scaling 会启动两个实例,然后暂停扩缩活动,直到冷却时间结束。冷却时间结束后,简单扩缩策略启动的任何扩缩活动都可以恢复。如果 CPU 利用率再次超过告警阈值上限,则 Auto Scaling 组将再次横向扩展,而冷却时间也会再次生效。不过,如果两个实例足以将指标值降为正常水平,该组会保持其当前大小。

注意事项

在使用简单扩缩策略和扩缩冷却时,应注意以下事项:

  • 目标跟踪扩缩策略和步进扩缩策略可以立即启动横向扩展活动,而无需等待冷却时间结束。相反,每当您的 Auto Scaling 组启动实例时,单个实例都有一个预热时间。有关更多信息,请参阅为 Auto Scaling 组设置原定设置实例预热

  • 当计划的操作在计划的时间开始时,它还可能会立即启动扩缩活动,而无需等待冷却时间结束。

  • 如果实例运行不正常,Amazon EC2 Auto Scaling 不会等到冷却时间结束才替换运行不正常的实例。

  • 当多个实例启动或终止时,冷却时间(无论是原定设置冷却还是特定于扩缩策略的冷却)会从最后一个实例完成启动或终止时开始生效。

  • 当您手动扩展 Auto Scaling 组时,预设情况下不会等待冷却时间结束。但您可以覆盖此行为,并在使用 Amazon CLI 或者 SDK 手动扩展时遵守此原定设置冷却设置。

  • 预设情况下,Elastic Load Balancing 会等待 300 秒,以便完成注销(Connection Draining)过程。如果组位于 Elastic Load Balance 负载均衡器后面,它将等待终止的实例完成注销,然后再开始计算冷却时间。

生命周期钩子会导致额外的延迟

如果触发了生命周期钩子,则冷却时间将在您完成生命周期操作后或超时时间结束后开始计算。例如,假设某个 Auto Scaling 组具有一个有关实例启动的生命周期钩子。当应用程序需求增加时,该组会启动实例以增加容量。由于存在生命周期钩子,所以实例将置于等待状态,并且由简单扩缩策略触发的扩缩活动将被暂停。当实例进入 InService 状态时,冷却时间开始。冷却时间结束后,将恢复简单扩缩策略活动。

启用 Elastic Load Balancing 时,对于横向缩减,冷却时间将从正在终止的实例完成 Connection Draining(注销延迟)之时开始计算。它不会等待钩子的持续时间结束。这意味着,横向缩减事件的结果反映在组的容量中后,因简单扩缩策略触发的任何扩缩活动都可以立即恢复。否则,等待所有三个活动(Connection Draining、生命周期钩子和冷却时间)完成会显著增加 Auto Scaling 组暂停扩缩所需的时间量。

更改原定设置冷却时间

首次在 Amazon EC2 Auto Scaling 控制台中创建 Auto Scaling 组时,您将无法设定原定设置冷却。预设情况下,此冷却时间设置为 300 秒(5 分钟)。如果需要,您可以在创建组后更新此设置。

更改原定设置冷却时间(控制台)

创建 Auto Scaling 组后,在 Details(详细信息)选项卡上,依次选择Advanced configurations(高级配置)、Edit(编辑)。对于 Default cooldown(原定设置冷却),请根据实例启动时间或其他应用程序需求选择所需的时长。

更改原定设置冷却时间(Amazon CLI)

使用以下命令更改新的或现有 Auto Scaling 组的原定设置冷却。如果未定义原定设置冷却,则使用 300 秒的原定设置。

要确认原定设置冷却的值,请使用 describe-auto-scaling-groups 命令。

为特定的简单扩缩策略设置冷却时间

预设情况下,所有简单扩缩策略都使用为 Auto Scaling 组定义的原定设置冷却时间。要设置特定简单扩缩策略的冷却时间,请在创建或更新策略时使用可选的冷却参数。在为策略指定冷却时间时,它将覆盖原定设置冷却。

对于扩缩策略特定的冷却时间,一个常见的使用场景是横向缩减策略。由于此策略是要终止实例,Amazon EC2 Auto Scaling 需要较短的时间来确定是否终止其他实例。终止实例应该是比启动实例快得多的操作。因此,300 秒的默认冷却时间太长。在这种情况下,为横向缩减策略设置一个具有较低值的扩缩策略特定冷却时间,可让该组更快横向缩减,从而帮助降低成本。

要在控制台中创建或更新简单扩缩策略,请在创建该组之后选择 Automatic scaling(弹性伸缩)选项卡。要使用 Amazon CLI 创建或更新简单扩缩策略,请使用 put-scaling-policy 命令。有关更多信息,请参阅步进和简单扩展策略