控制在横向缩减过程中要终止的 Auto Scaling 实例 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

当 Amazon EC2 Auto Scaling 使用终止策略时

下面的部分介绍 Amazon EC2 Auto Scaling 使用终止策略的情形。

缩减事件

当 Auto Scaling 组的所需容量有一个低于该组当前容量的新值时,就会发生放大事件。

在以下情况下发生扩展事件:

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

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

  • 当手动减小组的大小

以下示例显示了在发生扩展事件时终止策略的工作原理。

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

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

    
                                向外扩展一个实例后的 Auto Scaling 组。
  3. 当 Auto Scaling 组扩展时,Amazon EC2 Auto Scaling 将终止其中一个实例。

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

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

实例刷新

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

重新平衡可用区

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

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

移除实例

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

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

如果您扩展 Auto Scaling 组以包含更多可用区,或者更改所使用的可用区,则 Amazon EC2 Auto Scaling 会在新可用区中启动实例并终止其他可用区中的实例,以帮助确保实例在各个可用区中均匀分布。

可用性中断

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

例如,假设您有一个包含一个实例类型、两个可用区和两个实例所需容量的 Auto Scaling 组。当一个可用区出现故障时,Amazon EC2 Auto Scaling 会在运行状况良好的可用区中自动启动一个新实例,以替换运行状况不佳的可用区中的实例。当运行状况不佳的可用区恢复到正常状态时,Amazon EC2 Auto Scaling 会自动在此可用区中启动一个新实例,同时终止未受影响的可用区中的实例。

注意

再平衡时,Amazon EC2 Auto Scaling 在终止旧实例之前启动新实例,所以再平衡不会损害应用程序的性能或可用性。

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