控制在横向缩减过程中要终止的 Auto Scaling 实例 - Amazon A EC2 uto Scaling

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

控制在横向缩减过程中要终止的 Auto Scaling 实例

Amazon A EC2 uto Scaling 使用终止策略来决定终止实例的顺序。您可以使用预定义的策略或创建自定义策略来满足您的特定要求。通过使用自定义策略或实例规模进行保护,您还可以防止 Auto Scaling 组终止尚未准备好终止的实例。

当 Amazon A EC2 uto Scaling 使用终止政策时

以下各节介绍了 Amazon A EC2 uto Scaling 使用终止策略的场景。

横向缩减事件

当 Auto Scaling 组的所需容量的新值低于该组的当前容量时,就会发生缩减事件。

在以下情况下会发生规模事件:

  • 使用动态扩展策略时,组的大小会因指标值的更改而减小

  • 当使用计划的扩展时,组的大小由于计划的操作而减小

  • 当手动减小组的大小

以下示例显示了当事件发生规模时,终止政策是如何运作的。

  1. 例如,假设您有一个包含一个实例类型、两个可用区和两个实例所需容量的 Auto Scaling group 组。它还具有一个动态扩展策略,可在资源利用率增加或减少时添加和删除实例。该组中的两个实例分布在两个可用区之间,如下图所示。

    一个包含两个实例的基本 Auto Scaling 组。
  2. 当 Auto Scaling 组扩展时,Amazon A EC2 uto Scaling 会启动一个新实例。Auto Scaling 组现在有三个实例,分布在两个可用区,如下图所示。

    向外扩展一个实例后的 Auto Scaling 组。
  3. 当 Auto Scaling 组缩减规模时,Amazon A EC2 uto Scaling 会终止其中一个实例。

  4. 如果您没有为该群组分配特定的终止策略,Amazon A EC2 uto Scaling 将使用默认的终止策略。它选择包含两个实例的可用区,并终止从启动配置、不同的启动模板或当前启动模板的最旧版本启动的实例。如果实例是从相同的启动模板和版本启动的,Amazon A EC2 uto Scaling 会选择最接近下一个账单时间的实例并将其终止。

    缩放一个实例后的 Auto Scaling 组。

实例刷新

您可以启动实例刷新以更新 Auto Scaling 组中的实例。在实例刷新期间,Amazon A EC2 uto Scaling 会终止组中的实例,然后为已终止的实例启动替换实例。Auto Scaling 组的终止策略控制首先替换哪些实例。

重新平衡可用区

Amazon A EC2 uto Scaling 在为你的 Auto Scaling 组启用的可用区中均衡你的容量。这有助于减少可用区中断的影响。如果可用区间的容量分配失衡,Amazon A EC2 uto Scaling 会重新平衡 Auto Scaling 组,方法是在已启用的可用区中启动实例最少的实例,并在其他地方终止实例。终止策略控制哪些实例优先终止。

跨可用区的实例分布可能失去平衡的原因有很多。

移除实例

如果您从 Auto Scaling 组中分离实例,将实例置于备用状态或者明确终止实例并减少所需容量,从而阻止启动替换实例,则该组可能会变得不平衡。如果发生这种情况,Amazon A EC2 uto Scaling 会通过重新平衡可用区域来进行补偿。

使用不同于最初指定的可用区

如果您将 Auto Scaling 组扩展为包括其他可用区,或者您更改了使用的可用区,Amazon A EC2 uto Scaling 会在新的可用区中启动实例,并终止其他区域中的实例,以帮助确保您的 Auto Scaling 组均匀地跨越可用区。

可用性中断

可用性中断的情况很少发生。但是,如果某个可用区变得不可用并稍后恢复,则您的 Auto Scaling 组可能会在可用区之间变得不均衡。Amazon A EC2 uto Scaling 会尝试逐步重新平衡该组,而重新平衡可能会终止其他区域中的实例。

例如,假设您有一个包含一个实例类型、两个可用区和两个实例所需容量的 Auto Scaling 组。在一个可用区出现故障的情况下,Amazon A EC2 uto Scaling 会自动在运行正常的可用区中启动一个新实例,以取代运行状况不佳的可用区中的实例。然后,当运行状况不佳的可用区稍后恢复到正常状态时,Amazon A EC2 uto Scaling 会自动在该区域启动一个新实例,这反过来又会终止未受影响区域中的实例。

注意

重新平衡时,Amazon A EC2 uto Scaling 会在终止旧实例之前启动新实例,这样再平衡就不会影响应用程序的性能或可用性。

由于 Amazon A EC2 uto Scaling 会在终止旧实例之前尝试启动新实例,因此达到或接近指定的最大容量可能会阻碍或完全停止再平衡活动。为避免此问题,在再平衡活动期间,系统可以暂时超出某组的指定最大容量的 10%(或 1 个实例边缘,以较大者为准)。仅当该组达到或接近最大容量,并需要重新平衡时,才可超出容量限制;此类情况的原因是用户请求重新分区,或者是为了弥补区域可用性问题。该超出状态仅持续重新平衡该组所需的时间。