本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制在横向缩减过程中要终止的 Auto Scaling 实例
Amazon EC2 Auto Scaling 使用终止策略来决定终止实例的顺序。您可以使用预定义的策略或创建自定义策略来满足您的特定要求。通过使用自定义策略或实例缩减保护,您还可以防止 Auto Scaling 组终止尚未准备好终止的实例。
内容
当 Amazon EC2 Auto Scaling 使用终止策略时
下面的部分介绍 Amazon EC2 Auto Scaling 使用终止策略的情形。
缩减事件
当 Auto Scaling 组的所需容量有一个低于该组当前容量的新值时,就会发生放大事件。
在以下情况下发生扩展事件:
-
使用动态扩展策略时,组的大小会因指标值的更改而减小
-
当使用计划的扩展时,组的大小由于计划的操作而减小
-
当手动减小组的大小
以下示例显示了在发生扩展事件时终止策略的工作原理。
-
例如,假设您有一个包含一个实例类型、两个可用区和两个实例所需容量的 Auto Scaling group 组。它还具有一个动态扩展策略,可在资源利用率增加或减少时添加和删除实例。该组中的两个实例分布在两个可用区之间,如下图所示。
-
当 Auto Scaling 组扩展时,Amazon EC2 Auto Scaling 会启动一个新实例。Auto Scaling 组现在有三个实例,分布在两个可用区,如下图所示。
-
当 Auto Scaling 组扩展时,Amazon EC2 Auto Scaling 将终止其中一个实例。
-
如果您没有为该组分配特定的终止策略,则 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 个实例边缘,以较大者为准)。仅当该组达到或接近最大容量,并需要重新平衡时,才可超出容量限制;此类情况的原因是用户请求重新分区,或者是为了弥补区域可用性问题。该超出状态仅持续重新平衡该组所需的时间。