实例横向缩减保护 - Amazon EC2 Auto Scaling

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

实例横向缩减保护

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

默认情况下,当您创建 Auto Scaling 组时,实例缩减保护处于禁用状态。这意味着 Amazon EC2 Auto 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 EC2 Auto Scaling 组启动新的实例或将暖池中的示例移入 Auto Scaling 组时,该实例会继承 Auto Scaling 组的实例缩减保护设置。

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

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

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

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

    • 通过terminate-instance-in-auto-scaling-group命令手动终止。有关更多信息,请参阅 终止您自动扩缩组中的实例(AWS 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 组的实例缩减保护设置。启用后,该组启动的所有新实例都将启用实例缩减保护。

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

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

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

为现有组启用或禁用缩小保护
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  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. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  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 终止保护。但是,即使启用了终止保护和实例扩展保护,如果运行状况检查确定实例运行状况不佳或组本身被意外删除,保存到实例存储的数据也可能会丢失。与任何环境一样,最佳做法是频繁备份您的数据,或者在适合您的业务连续性要求时备份数据。