临时从 Auto Scaling 组中移除实例 - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

临时从 Auto Scaling 组中移除实例

您可以将处于 InService 状态的实例置于 Standby 状态,更新实例或排查实例问题,然后将实例恢复运行状态。处于备用状态的实例仍是 Auto Scaling 组的一部分,但它们不会主动处理负载均衡器流量。

此功能可帮助您停止和启动实例或重启实例,而不必担心 Amazon A EC2 uto Scaling 会在运行状况检查或缩容事件期间终止实例。

例如,您可以通过更改启动模板或启动配置,随时更改 Auto Scaling 组的 Amazon 系统映像 (AMI)。Auto Scaling 组随后启动的任何实例都使用此功能AMI。不过,Auto Scaling 组不会更新当前正在运行的实例。您可以终止这些实例并让 Amazon A EC2 uto Scaling 替换它们,也可以使用实例刷新功能终止和替换这些实例。或者,您可以将实例置于备用状态,更新软件,然后将实例恢复运行。

从 Auto Scaling 组中分离实例类似于将实例置于备用状态。如果您想将实例附加到其他组或像独立实例一样管理实例并可能将其终止,则分离EC2实例可能会很有用。有关更多信息,请参阅 从自动扩缩组中分离或附加实例

备用状态的工作方式

备用状态按如下方式工作以帮助您临时从 Auto Scaling 组中删除实例:

  1. 将实例置于备用状态。实例保持此状态,直至您退出备用状态。

  2. 如果已有负载均衡器目标组或经典负载均衡器附上 Auto Scaling 组,则会将实例取消注册到该负载均衡器。如果为负载均衡器启用了 Connection Draining,预设情况下,Elastic Load Balancing 会等待 300 秒,然后再完成注销过程,这有助于正在进行的请求的完成。

  3. 您可以更新实例或排查实例的问题。

  4. 可通过退出备用状态,将实例恢复运行状态。

  5. 如果已有负载均衡器目标组或经典负载均衡器附上 Auto Scaling 组,则会将实例注册到该负载均衡器。

有关自动扩缩组中实例的生命周期的更多信息,请参阅 Amazon EC2 Auto Scaling 实例生命周期

注意事项

以下是将实例移入和移出备用状态时的注意事项:

  • 当您将实例置于备用状态时,可以通过此操作减少所需容量,也可以将其保持不变。

    • 如果您选择不减少 Auto Scaling 组的所需容量,Amazon A EC2 uto Scaling 会启动一个实例来替换处于待机状态的实例。这样做是为了帮助您在一个或多个实例处于备用状态时保持应用程序的容量。

    • 如果您选择减少自动扩缩组的所需容量,这样会阻止启动实例来替换处于备用状态的实例。

  • 将实例重新投入使用后,所需容量会增加,以反映自动扩缩组中有多少个实例。

  • 要进行增加(和减少)操作,新的所需容量必须介于最小和最大组大小之间。否则,该操作将失败。

  • 如果在将实例置于备用状态或通过退出备用状态使实例恢复服务后,发现您的 Auto Scaling 组在可用区域之间不平衡,Amazon A EC2 uto Scaling 会通过重新平衡可用区来进行补偿,除非您暂停该过程。AZRebalance有关更多信息,请参阅 暂停和恢复 Amazon A EC2 uto Scaling 流程

  • 您需为处于备用状态的实例付费。

处于备用状态的实例的运行状况

Amazon A EC2 uto Scaling 不会对处于待机状态的实例执行运行状况检查。当实例处于备用状态时,其运行状况将反映您将实例置于备用状态之前,实例具有的状态。在您将实例重新投入使用之前,Amazon A EC2 uto Scaling 不会对该实例执行运行状况检查。

例如,如果您将运行正常的实例置于备用状态,然后将其终止,Amazon A EC2 uto Scaling 会继续将该实例报告为运行正常。如果您尝试将处于待机状态的已终止实例重新投入使用,Amazon A EC2 uto Scaling 会对该实例执行运行状况检查,确定该实例已终止且运行状况不佳,然后启动替代实例。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查

通过将实例设置为备用来暂时移除实例

使用以下程序之一,通过将实例置于备用状态来暂时停止使用。

Console
临时删除实例
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

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

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

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

  4. 选择 Actions(操作)和 Set to Standby(设置为备用)。

  5. 设置为备用对话框上,保持替代实例 复选框为选中状态,以启动替代实例。清除该复选框可减少所需容量。

  6. 当系统提示您进行确认时,键入 standby 以确认将指定实例置于 Standby 状态,然后选择设置为备用

  7. 您可以根据需要更新实例或排查实例的问题。当您完成后,请继续下一步以将实例恢复运行。

  8. 选择实例,选择操作设置为 InService。在 “设置为 InService” 对话框中,选择 “设置为” InService。

Amazon CLI

要从自动扩缩组中暂时移除实例,请使用以下示例命令。替换每个 user input placeholder 用你自己的信息。

临时删除实例
  1. 使用以下describe-auto-scaling-instances命令识别要更新的实例。

    aws autoscaling describe-auto-scaling-instances \ --query 'AutoScalingInstances[?AutoScalingGroupName==`my-asg`]'

    下面的示例显示运行此命令时产生的输出。

    记下您打算从该组中移除的实例的 ID。在下一步骤中,您需要用到此 ID。

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceId": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }
  2. 将实例移动到 Standby 状态使用以下 enter-standby 命令。--should-decrement-desired-capacity 选项将减少所需容量以使 Auto Scaling 组不再启动替代实例。

    aws autoscaling enter-standby --instance-ids i-05b4f7d5be44822a6 \ --auto-scaling-group-name my-asg --should-decrement-desired-capacity

    以下为响应示例。

    { "Activities": [ { "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "AutoScalingGroupName": "my-asg", "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "Cause": "At 2023-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StartTime": "2023-12-15T21:31:26.150Z", "StatusCode": "InProgress", "Progress": 50, "Details": "{\"Subnet ID\":\"subnet-c934b782\",\"Availability Zone\":\"us-west-2a\"}" } ] }
  3. (可选)Standby使用以下describe-auto-scaling-instances命令验证实例是否已启用。

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    以下为响应示例。注意,实例状态此时为 Standby

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceType": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "Standby" }, ... ] }
  4. 您可以根据需要更新实例或排查实例的问题。当您完成后,请继续下一步以将实例恢复运行。

  5. 使用以下 exit-standby 命令使实例恢复运行:

    aws autoscaling exit-standby --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg

    以下为响应示例。

    { "Activities": [ { "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "AutoScalingGroupName": "my-asg", "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "Cause": "At 2023-12-15T21:46:14Z instance i-05b4f7d5be44822a6 was moved out of standby in response to a user request, increasing the capacity from 3 to 4.", "StartTime": "2023-12-15T21:46:14.678Z", "StatusCode": "PreInService", "Progress": 30, "Details": "{\"Subnet ID\":\"subnet-c934b782\",\"Availability Zone\":\"us-west-2a\"}" } ] }
  6. (可选)使用以下 describe-auto-scaling-instances 命令验证实例是否已恢复运行。

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    以下为响应示例。请注意,实例状态为 InService

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "InstanceType": "t3.micro", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }