使用实例横向缩减保护以控制实例终止
实例横向缩减保护让您可以控制 Amazon EC2 Auto Scaling 可以终止哪些实例。此功能的一个常见用例是扩缩基于容器的工作负载。有关更多信息,请参阅 设计您的应用程序以妥善处理实例终止。
默认情况下,创建自动扩缩组时将禁用实例横向缩减保护。这意味着 Amazon EC2 Auto Scaling 可以终止该组中的任何实例。
您可以在自动扩缩组上启用实例横向缩减保护设置,在实例启动后立即对其进行保护。当实例状态为 InService 时,实例缩减保护启动。然后,如需控制哪些实例可以终止,请禁用自动扩缩组中单个实例的横向缩减保护设置。这样做可以继续保护某些实例免遭意外终止。
注意事项
使用实例横向缩减保护时应注意以下事项:
-
如果自动扩缩组中的所有实例都受横向缩减保护并且发生横向缩减事件,则该组的所需容量会递减。不过,自动扩缩组不能终止所需数量的实例,直到其实例横向缩减保护设置被禁用。在 Amazon Web Services 管理控制台中,如果自动扩缩组中的所有实例在发生横向缩减事件时都受到保护而无法横向缩减,则自动扩缩组的活动历史记录将包括以下消息:
Could not scale to desired capacity because all remaining instances are protected from scale in. -
当您分离受横向缩减保护的实例时,其实例横向缩减保护设置就会失效。再次将实例附加到组时,它会继承组的当前实例横向缩减保护设置。当 Amazon EC2 Auto Scaling 启动新的实例或将暖池中的实例移入自动扩缩组时,该实例会继承自动扩缩组的实例横向缩减保护设置。
-
实例缩减保护并不能针对以下情况保护 Auto Scaling 实例:
-
实例未通过运行状况检查的情况下的运行状况检查更换。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查。
-
竞价型实例中断。当竞价型实例的容量不再可用或 Spot 价格超过您的最高价时,将终止该实例。
-
容量块预留结束。Amazon EC2 会收回容量块实例,即使这些实例受到横向缩减保护。
-
通过
terminate-instance-in-auto-scaling-group命令手动终止。有关更多信息,请参阅 终止您自动扩缩组中的实例(Amazon CLI)。 -
通过 Amazon EC2 控制台、CLI 命令和 API 操作手动终止。要保护 Auto Scaling 实例不被手动终止,请启用 Amazon EC2 终止保护。(这不会阻止 Amazon EC2 Auto Scaling 终止实例或通过
terminate-instance-in-auto-scaling-group命令手动终止。) 有关在启动模板中启用 Amazon EC2 终止保护的信息,请参阅使用高级设置创建启动模板。
-
更改自动扩缩组的横向缩减保护
您可以启用或禁用 Auto Scaling 组的实例缩减保护设置。启用该功能后,该组启动的所有新实例都将启用实例横向缩减保护。
为自动扩缩组启用或禁用此设置不会影响现有的实例。
更改实例的横向缩减保护
默认情况下,实例从其 Auto Scaling 组获取其实例缩减保护设置。但是,您可以在实例启动后对单个实例启用或禁用实例横向缩减保护。
注意
请记住,实例横向缩减保护不能保证在发生人为错误时不会终止实例:例如,有人使用 Amazon EC2 控制台或 Amazon CLI 手动终止。要防止您的实例被意外终止,可使用 Amazon EC2 终止保护。但是,即使启用了终止保护和实例扩展保护,如果运行状况检查确定实例运行状况不佳或组本身被意外删除,保存到实例存储的数据也可能会丢失。与任何环境一样,最佳做法是频繁备份您的数据,或者在适合您的业务连续性要求时备份数据。