为 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 组时启用原定设置实例预热。也可以为现有的组启用此功能。
验证组的原定设置实例预热设置
验证 Auto Scaling 组的原定设置实例预热设置(Amazon CLI)
使用 describe-auto-scaling-groups 命令。
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-namemy-asg
以下为响应示例。
{
"AutoScalingGroups": [
{
"AutoScalingGroupName": "my-asg",
"AutoScalingGroupARN": "arn",
...
"DefaultInstanceWarmup": 120
}
]
}