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

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

临时从 Auto Scaling 组中移除实例

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

此功能可帮助您停止和启动实例或重新启动实例,而无需担心 Amazon EC2 Auto Scaling 在运行状况检查过程中或在扩展事件期间终止实例。

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

从 Auto Scaling 组中分离实例类似于将实例置于待机状态。如果您想要管理独立 EC2 实例并可能终止它们,则分离实例可能会很有用。有关更多信息,请参阅 将 EC2 实例从 Auto Scaling 组中分离出来

重要

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

待机状态的工作原理

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

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

  2. 如果已向 Auto Scaling 组附加负载均衡器目标组或传统负载均衡器,则将从该负载均衡器取消注册实例。如果为负载均衡器启用了连接耗尽,则 Elastic Load Balancing 在取消注册过程完成前会默认等待 300 秒,这有助于完成未送达请求。

  3. 在默认情况下,当您将一个实例置于备用状态时,指定作为所需容量的值会减少。这可防止在您将此实例置于备用状态时启动附加实例。或者,您可以指定不减少所需容量。如果您指定此选项,Auto Scaling 组将启动一个实例来替换处于备用状态的实例。这样做是为了帮助您在一个或多个实例处于备用状态时保持应用程序的容量。

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

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

  6. 在您将处于备用状态的实例恢复运行后,所需容量会增加。如果您在将实例置于备用状态时未减小容量,则 Auto Scaling 组会检测到您拥有的实例数多于所需的实例数。它应用终止策略以实际减小组的大小。有关更多信息,请参阅 控制哪些 Auto Scaling 实例在

  7. 如果已向 Auto Scaling 组附加负载均衡器目标组或传统负载均衡器,则会将实例注册到该负载均衡器。

下图阐释了此过程中实例状态之间的过渡:


                    实例进入和退出备用状态。

有关 Auto Scaling 组中实例的完整生命周期的更多信息,请参阅Amazon EC2 Auto Scaling 实例生命周期.

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

Amazon EC2 Auto Scaling 不会对处于备用状态的实例执行运行状况检查。当实例处于备用状态时,其运行状况将反映您将实例置于备用状态之前,实例具有的状态。Amazon EC2 Auto Scaling 不对实例执行运行状况检查,直至您将实例恢复运行。

例如,如果您将运行正常的实例置于备用状态,然后终止该实例,则 Amazon EC2 Auto Scaling 会继续将实例报告为运行正常。如果您尝试将处于待机状态的终止实例恢复运行,则 Amazon EC2 Auto Scaling 将对实例执行运行状况检查,确定它运行状况不佳,并启动替换实例。有关运行状况检查的简介,请参阅。Auto Scaling 实例的运行 Health 况检查.

临时删除实例(控制台)

以下步骤演示更新当前正在运行的实例的一般过程。

临时删除实例

  1. 以下网址打开 Amazon EC2 Auto Scaling 控制台:https://console.aws.amazon.com/ec2autoscaling/.

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

    将在 Auto Scaling groups (Auto Scaling 组) 页面底部打开一个拆分窗格,其中显示有关所选组的信息。

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

  4. 选择 ActionsSet to Standby

  5. Set to Standby (设置为备用) 对话框上,选中该复选框可启动替代实例,取消选中可减少所需容量。选择设置为备用

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

  7. 选择实例,再选择 ActionsSet to InService。在 Set to InService (设置为可用) 对话框中,单击 Set to InService (设置为可用)

临时删除实例 (Amazon CLI)

以下步骤演示更新当前正在运行的实例的一般过程。

临时删除实例

  1. 使用以下描述-Auto Scaling 实例命令确定要更新的实例。

    aws autoscaling describe-auto-scaling-instances

    以下为响应示例。

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }
  2. 将实例移动到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": [ { "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:31:26.150Z", "Progress": 50, "Cause": "At 2014-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StatusCode": "InProgress" } ] }
  3. (可选)验证该实例是否处于Standby使用以下描述-Auto Scaling 实例命令。

    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", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "Standby" }, ... ] }
  4. 您可以根据需要更新实例或排查实例的问题。当您完成后,请继续下一步以将实例恢复运行。

  5. 使用以下命令使实例恢复运行退出待机命令。

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

    以下为响应示例。

    { "Activities": [ { "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:46:14.678Z", "Progress": 30, "Cause": "At 2014-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.", "StatusCode": "PreInService" } ] }
  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", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }