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

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

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

Amazon EC2 Auto Scaling 使用终止策略来确定它在扩展事件期间首先终止哪些实例。终止策略定义了 Amazon EC2 Auto Scaling 在选择要终止的实例时使用的终止条件。

Auto Scaling 组使用默认终止策略,但您可以根据自己的终止条件选择或创建自己的终止策略。这样,您就可以确保根据您的特定应用程序需求终止您的实例。

Amazon EC2 Auto Scaling 还提供了实例缩减保护。启用此功能后,它会防止在扩展事件期间终止实例。您可以在创建 Auto Scaling 组时启用实例缩减保护,并可以更改运行的实例上的设置。如果您在现有 Auto Scaling 组上启用实例缩减保护,则在此之后启动的所有新实例都将启用实例缩减保护。

注意

实例扩展保护不能保证在发生人为错误时不会终止实例,例如,有人使用 Amazon EC2 控制台或 Amazon CLI 手动终止。要防止您的实例被意外终止,可使用 Amazon EC2 终止保护。但是,即使启用了终止保护和实例扩展保护,如果运行状况检查确定实例运行状况不佳或组本身被意外删除,保存到实例存储的数据也可能会丢失。与任何环境一样,最佳做法是频繁备份您的数据,或者在适合您的业务连续性要求时备份数据。

终止策略使用方案

下面的部分介绍 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 组中的实例。在实例刷新期间,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 个实例边缘,以较大者为准)。仅当该组达到或接近最大容量,并需要重新平衡时,才可超出容量限制;此类情况的原因是用户请求重新分区,或者是为了弥补区域可用性问题。该超出状态仅持续重新平衡该组所需的时间。