Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Auto Scaling 冷却时间

Auto Scaling 冷却时间是 Auto Scaling 组的一个可配置设置,可以帮助确保在上一扩展活动生效前 Auto Scaling 不会启动或终止其他实例。在 Auto Scaling 组使用简单的扩展策略动态扩展后,Auto Scaling 会等待冷却时间完成,然后再继续扩展活动。在手动扩展 Auto Scaling 组时,默认设置是不等待冷却时间,但您可以覆盖默认设置并采用冷却时间。如果实例运行状况不佳,Auto Scaling 不会等待冷却时间结束才替换运行状况不佳的实例。

重要

步进扩展策略或计划的扩展不支持冷却时间。

Auto Scaling 支持默认冷却时间和特定于扩展的冷却时间。

示例:Auto Scaling 冷却时间

考虑以下情景:有一个在 AWS 中运行的 Web 应用程序。此 Web 应用程序包含三个基本层:Web、应用程序和数据库。为了确保应用程序始终拥有足够的资源来满足流量需求,您创建了两个 Auto Scaling 组:一个用于 Web 层,一个用于应用程序层。

 包含一个 Web 层和一个应用程序层的基本网络架构。

为了帮助确保用于应用程序层的 Auto Scaling 组具有适当数量的 EC2 实例,请创建一个 CloudWatch 警报,每当实例的 CPUUtilization 指标超过 90% 时便会扩展。当警报发生时,Auto Scaling 会启动并配置其他实例。

  CloudWatch 警报与扩展策略协同工作的示例

在实例投入使用之前,这些实例使用配置脚本安装和配置软件。因此,实例从启动到投入使用大约需要两到三分钟的时间。实际时间取决于诸多因素,如实例大小和是否有启动脚本要完成等。

现在出现了流量高峰,从而导致 CloudWatch 警报触发。该警报触发时,Auto Scaling 会启动一个实例来帮助处理增加的需求。但是存在一个问题:该实例需要几分钟的时间才能启动。在此期间,CloudWatch 警报可能会继续触发,从而导致 Auto Scaling 在警报每次出现时都另外启动一个实例。

但是,有了冷却时间,Auto Scaling 在启动一个实例后,将暂停所有简单扩展策略或手动扩展引起的扩展活动,直至经过了指定时间量。(默认值为 300 秒。)这样,新启动的实例有时间开始处理应用程序流量。冷却时间过后,所有暂停的扩展操作都会恢复。如果 CloudWatch 警报再次触发,则 Auto Scaling 将启动另一个实例,而冷却时间也会再次生效。不过,如果新增的实例足以将 CPU 使用率降为正常水平,则该组会保持其当前大小。

默认冷却时间

创建 Auto Scaling 组时会应用默认冷却时间。其默认值为 300 秒。此冷却时间自动应用于简单扩展策略的任何动态扩展活动,您可以选择请求将此冷却时间应用于您的手动扩展活动。

 显示默认冷却时间如何影响扩展操作的流程图。

创建 Auto Scaling 组时,您可以使用 AWS 管理控制台、create-auto-scaling-group 命令 (AWS CLI) 或 CreateAutoScalingGroup API 操作配置默认冷却时间。

您可以随时使用 AWS 管理控制台、update-auto-scaling-group 命令 (AWS CLI) 或 UpdateAutoScalingGroup API 操作更改默认冷却时间。

特定于扩展的冷却时间

除了指定 Auto Scaling 组的默认冷却时间外,您还可以创建适用于特定简单扩展策略或手动扩展的冷却时间。特定于扩展的冷却时间会覆盖默认冷却时间。

特定于扩展的冷却时间常用于收缩策略,即根据特定条件或指标终止实例的策略。由于此策略是要终止实例,Auto Scaling 需要较短的时间来确定是否终止其他实例。而 300 秒的默认冷却时间就太长了,您可以通过对收缩策略应用特定于扩展的 180 秒冷却时间来降低成本。

您可以使用 AWS 管理控制台、put-scaling-policy 命令 (AWS CLI) 或 PutScalingPolicy API 操作创建特定于扩展的冷却时间。

冷却时间和多个实例

前面部分提供的示例演示了冷却时间在启动或终止单个实例时对 Auto Scaling 组的影响方式。但是,Auto Scaling 组一次启动多个实例并不少见。例如,您可能会选择让 Auto Scaling 在达到特定指标阈值时启动三个实例。

对于多个实例,冷却时间(无论是默认冷却时间还是特定于扩展的冷却时间)会在最后一个实例启动时开始生效。

冷却时间和生命周期挂钩

Auto Scaling 支持向 Auto Scaling 组添加生命周期挂钩。通过这些挂钩,您可以控制如何在 Auto Scaling 组中启动和终止实例,从而可以在实例投入使用之前或终止之前对实例执行操作。

生命周期挂钩可以影响针对 Auto Scaling 组、手动扩展或简单扩展策略配置的任何冷却时间的行为。冷却时间在实例退出等待状态之后才会开始。

冷却时间和竞价型实例

您可以创建 Auto Scaling 组以使用竞价型实例,而不使用按需实例或预留实例。当所有竞价型实例出价成功时,冷却时间开始。