使用实例缩减保护来控制实例终止 - Amazon A EC2 uto Scaling

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

使用实例缩减保护来控制实例终止

实例缩减保护使您可以控制 Amazon A EC2 uto Scaling 可以终止哪些实例。此功能的一个常见用例是扩展基于容器的工作负载。有关更多信息,请参阅 设计您的应用程序以优雅地处理实例终止

默认情况下,当您创建 Auto Scaling 组时,实例缩减保护处于禁用状态。这意味着 Amazon A EC2 uto Scaling 可以终止该组中的任何实例。

您可以在自动扩缩组上启用实例横向缩减保护设置,在实例启动后立即对其进行保护。当实例状态为 InService 时,实例缩减保护启动。然后,如需控制哪些实例可以终止,请禁用自动扩缩组中单个实例的横向缩减保护设置。这样做可以继续保护某些实例免遭意外终止。

注意事项

以下是使用实例缩减保护时的注意事项:

  • 如果 Auto Scaling 组中的所有实例都受到保护,不允许缩容,并且发生了缩减事件,则其所需容量就会减少。但是,在保护设置中禁用实例缩放之前,Auto Scaling 组无法终止所需数量的实例。在 Auto Scaling 组的活动历史记录中,如果 Auto Scaling 组中的所有实例都受到保护,在发生缩减事件时不会缩小,则会显示以下消息: AWS Management ConsoleCould not scale to desired capacity because all remaining instances are protected from scale in.

  • 如果您分离受保护免受缩容保护的实例,则其实例缩减保护设置将丢失。当您再次将该实例附加到该组时,它会继承该组的当前实例规模。当 Amazon A EC2 uto Scaling 启动新实例或将实例从温池移至 Auto Scaling 组时,该实例将继承 Auto Scaling 组的实例规模保护设置。

  • 实例缩减保护并不能针对以下情况保护 Auto Scaling 实例:

    • 实例未通过运行状况检查的情况下的运行状况检查更换。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查

    • 竞价型实例中断。当竞价型实例的容量不再可用或 Spot 价格超过您的最高价时,将终止该实例。

    • 容量区块预留已结束。Amazon EC2 会收回容量块实例,即使这些实例受到保护以免缩容。

    • 通过terminate-instance-in-auto-scaling-group命令手动终止。有关更多信息,请参阅 终止您自动扩缩组中的实例(AWS CLI)

    • 通过 Amazon EC2 控制台、CLI命令和API操作手动终止。要保护 Auto Scaling 实例免遭手动终止,请启用亚马逊EC2终止保护。(这不会阻止 Amazon A EC2 uto Scaling 通过该terminate-instance-in-auto-scaling-group命令终止实例或手动终止。) 有关在启动模板中启用 Amazon EC2 终止保护的信息,请参阅使用高级设置创建启动模板

更改 Auto Scaling 组的缩小保护

您可以启用或禁用 Auto Scaling 组的实例缩减保护设置。启用该功能后,该组启动的所有新实例都将启用实例缩减保护。

为 Auto Scaling 组启用或禁用此设置不会影响现有实例。

Console
为新的 Auto Scaling 组启用缩小保护

创建 Auto Scaling 组时,在配置组大小和扩展策略页面的实例缩减保护下,选中启用实例缩小保护复选框

为现有组启用或禁用缩小保护
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选中 Auto Scaling 组旁边的复选框。

    这时将在页面底部打开一个拆分窗格。

  3. Details(详细信息)选项卡上,选择 Advanced configurations(高级配置)、Edit(编辑)。

  4. 对于实例缩小保护,请选中或清除 “启用实例规模保护” 复选框以根据需要启用或禁用此选项。

  5. 选择更新

AWS CLI
为新的 Auto Scaling 组启用缩小保护

使用以下create-auto-scaling-group命令启用实例缩容保护。

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in ...
为现有组启用缩小保护

使用以下update-auto-scaling-group命令为指定的 Auto Scaling 组启用实例缩减保护。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in
禁用现有组的缩小保护

使用以下命令为指定组禁用实例缩减保护。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --no-new-instances-protected-from-scale-in

更改实例的缩小保护

默认情况下,实例从其 Auto Scaling 组获取其实例缩减保护设置。但是,您可以在单个实例启动后为其启用或禁用实例缩减保护。

Console
为实例启用或禁用缩容保护
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选中您的自动扩缩组旁边的复选框。

    这时将在页面底部打开一个拆分窗格。

  3. Instance management(实例管理)选项卡的 Instances(实例)中,选择实例。

  4. 要启用实例缩减保护,请依次选择 Actions(操作)和 Set scale-in protection(设置缩减保护)。系统提示时,选择 Set scale-in protection(设置缩减保护)。

  5. 要禁用实例缩减保护,请依次选择 Actions(操作)和 Remove scale-in protection(删除缩减保护)。系统提示时,选择 Remove scale-in protection(删除缩减保护)。

AWS CLI
为实例启用缩容保护

使用以下set-instance-protection命令为指定实例启用实例缩容保护。

aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --protected-from-scale-in
禁用实例的缩小保护

使用以下命令为指定实例禁用实例缩减保护。

aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --no-protected-from-scale-in
注意

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