为 Auto Scaling 组设置原定设置实例预热 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为 Auto Scaling 组设置原定设置实例预热

您可以使用原定设置实例预热功能来优化用于动态扩缩的 Amazon CloudWatch 指标。CloudWatch 会跨 Auto Scaling 实例采集和聚合使用情况数据,例如 CPU 和网络 I/O。您可以使用这些指标来创建扩缩策略,以随着所选指标值的增减调整 Auto Scaling 组中的实例数量。

当未启用原定设置实例预热时,每个实例将在实例到达 InService 状态时立即向聚合指标提供使用情况数据。但如果启用了原定设置实例预热,则实例将在完成预热后才会提供使用情况数据。从而防止动态扩缩受到尚未处理应用程序流量,并且可能暂时存在计算资源使用率较高的单个实例的指标影响。

预设情况下不会配置和启用原定设置实例预热。为了优化会持续扩展的扩缩策略(例如目标跟踪扩缩策略和步进扩缩策略)的性能,我们强烈建议您启用原定设置实例预热功能,即使其值设置为 0 秒。如果未启用原定设置实例预热,则可能会在实例启动时执行原定设置冷却,动态扩缩的横向缩减活动将被阻止,直到原定设置冷却时间结束。

此外,通过启用原定设置实例预热功能,您不必再为单个扩缩策略和实例刷新指定预热参数值。您可以在组级别使用原定设置实例预热统一这些设置。预设情况下,这些参数将设定为原定设置实例预热的值。有关更多信息,请参阅 可用的预热和冷却设置

选择原定设置的实例预热时间值

选择预热时间值时,应注意优化平衡采集合法流量的使用数据与尽量减少与启动时的临时使用峰值相关的数据采集。

完成启动后,实例将附加到 Auto Scaling 组并注册到 Elastic Load Balancing 负载均衡器(如果使用),然后才会进入 InService 状态。在实例进入 InService 状态之后,资源消耗仍然可能会经历暂时的高峰,然后才会逐渐稳定下来。例如,与无需下载大型资产的轻量级 Web 服务器相比,对于必须下载并缓存大型资产的应用程序服务器,其资源消耗将需要更长的时间才能稳定。原定设置实例预热提供了稳定资源消耗所需的时间延迟。

重要

对于需要在启动时运行配置任务或脚本的使用案例,则还应考虑使用生命周期钩子。在横向扩展事件持续期间,生命周期钩子可以将实例投入使用的时间延迟到实例完成初始化之后。如果引导启动脚本需要一段时间才能完成,则生命周期钩子将特别有用。因此,如果您添加了生命周期钩子,则可以降低原定设置实例预热的值。如果您将原定设置实例预热设为 0 秒,则不会在生命周期钩子所需时间之外,强加额外的等待时间。有关使用生命周期钩子的更多信息,请参阅 Amazon EC2 Auto Scaling 生命周期钩子

了解原定设置实例预热如何影响扩缩

启用原定设置实例预热后,Auto Scaling 组中每个新启动的实例都有一个预热时间。

当实例处于预热时间时,仅当未预热实例的指标值大于策略的告警阈值上限(与目标跟踪扩缩策略的目标利用率相同)时,您的扩缩策略才会横向扩展。

如果实例仍在预热并且组再次横向扩展,则这些实例将计算为下一横向扩展活动所需容量的一部分。因此,落入同一分步调整中的多个警报违例只会导致一个扩展活动。旨在持续 (但不过度) 扩大。

其目的是在需求下降时谨慎地横向缩减,以保护应用程序的可用性。这会阻止通过扩缩策略启动的横向缩减活动,直到实例完成预热。

为组启用原定设置实例预热

您可以在创建 Auto Scaling 组时启用原定设置实例预热。也可以为现有的组启用此功能。

Console

为新的组启用原定设置实例预热(控制台)

创建 Auto Scaling 组时,在 Configure advanced options(配置高级选项)页面的 Additional settings(其他设置)下,选择 Enable default instance warmup(启用原定设置实例预热)选项。选择应用程序所需的预热时间。

Amazon CLI

为新的组启用原定设置实例预热(Amazon CLI)

要为 Auto Scaling 组启用原定设置实例预热,请添加 --default-instance-warmup 选项并指定一个介于 0 到 3600 之间的值(以秒为单位)。启用此功能后,将值设为 -1 将会关闭此设置。

以下 create-auto-scaling-group 命令会创建一个名称为 my-asg 的 Auto Scaling 组,同时会启用原定设置实例预热功能,并将其值设置为 120 秒。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120 ...
提示

如果此命令引发错误,请确保您已在本地将 Amazon CLI 更新到最新版本。

Console

为现有的组启用原定设置实例预热(控制台)

  1. 打开位于 https://console.aws.amazon.com/ec2autoscaling 的 Amazon EC2 Auto Scaling 控制台,然后选择在其中创建 Auto Scaling 组的 Amazon Web Services 区域。

  2. 选中 Auto Scaling 组旁边的复选框。

    这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。

  3. Details(详细信息)选项卡上,选择 Advanced configurations(高级配置)、Edit(编辑)。

  4. 对于 Default instance warmup(原定设置实例预热),选择应用程序所需的预热时间。

  5. 选择 Update(更新)。

Amazon CLI

为现有的组启用原定设置实例预热(Amazon CLI)

以下示例使用 update-auto-scaling-group 命令为名为的 my-asg 的现有 Auto Scaling 组启用原定设置实例预热,并将其值设置为 120 秒。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --default-instance-warmup 120
提示

如果此命令引发错误,请确保您已在本地将 Amazon CLI 更新到最新版本。

验证组的原定设置实例预热设置

验证 Auto Scaling 组的原定设置实例预热设置(Amazon CLI)

使用 describe-auto-scaling-groups 命令。

aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

以下为响应示例。

{ "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "DefaultInstanceWarmup": 120 } ] }