Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

临时从 Auto Scaling 组中删除实例

Auto Scaling 使您能够将处于 InService 状态的实例置于 Standby 状态,更新实例或排查实例的问题,然后将实例返回运行状态。处于备用状态的实例仍是 Auto Scaling 组的一部分,但它们不会主动处理应用程序流量。

重要

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

例如,您可以随时更改 Auto Scaling 组的启动配置,Auto Scaling 组启动的任何后续实例将使用此配置。不过,Auto Scaling 组不会更新当前正在运行的实例。您可以终止这些实例并让 Auto Scaling 组替换这些实例,也可以将其置于备用状态,更新软件,然后将实例重新置于运行状态。

备用状态的工作方式

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

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

  2. 如果已向 Auto Scaling 组附加负载均衡器或目标组,则将从该负载均衡器或目标组取消注册实例。

  3. 默认情况下,在将实例置于备用状态时,Auto Scaling 会减少 Auto Scaling 组的所需容量。这可防止 Auto Scaling 在您将此实例置于备用状态时启动附加实例。或者,您可以指定 Auto Scaling 不减少容量。这将导致 Auto Scaling 启动附加实例来替换处于备用状态的实例。

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

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

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

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

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

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

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

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

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

例如,如果您将运行正常的实例置于备用状态,然后终止该实例,则 Auto Scaling 会继续将实例报告为运行正常。如果您将终止的实例恢复运行,则 Auto Scaling 将对实例执行运行状况检查,确定它运行状况不佳,并启动替换实例。

使用 AWS 管理控制台临时删除实例

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

使用控制台临时删除实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 Auto Scaling 下,选择 Auto Scaling Groups

  3. 选择 Auto Scaling 组。

  4. Instances 选项卡上,选择实例。

  5. 选择 ActionsSet to Standby

  6. Set to Standby 页面上,选中该复选框可让 Auto Scaling 启动替代实例,取消选中可减少所需容量。选择 Set to Standby

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

  8. 选择实例,再选择 ActionsSet to InService。在 Set to InService 页面上,选择 Set to InService

使用 AWS CLI 临时删除实例

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

使用 AWS CLI 临时删除实例

  1. 使用下面的 describe-auto-scaling-instances 命令确定要更新的实例:

    Copy
    aws autoscaling describe-auto-scaling-instances

    以下为响应示例:

    {
        "AutoScalingInstances": [
            {
                "AvailabilityZone": "us-west-2a",
                "InstanceId": "i-5b73d709",
                "AutoScalingGroupName": "my-asg",
                "HealthStatus": "HEALTHY",
                "LifecycleState": "InService",
                "LaunchConfigurationName": "my-lc"
            },
            ...
        ]
    }
  2. 使用以下 enter-standby 命令将实例置于 Standby 状态。--should-decrement-desired-capacity 选项将减少所需容量以使 Auto Scaling 不再启动替换实例。

    Copy
    aws autoscaling enter-standby --instance-ids i-5b73d709 --auto-scaling-group-name my-asg --should-decrement-desired-capacity

    以下为响应示例:

    {
        "Activities": [
            {
                "Description": "Moving EC2 instance to Standby: i-5b73d709",
                "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-5b73d709 was moved to standby 
                  in response to a user request, shrinking the capacity from 4 to 3.",
                "StatusCode": "InProgress"
            }
        ]
    }
  3. (可选)使用以下 describe-auto-scaling-instances 命令验证实例是否处于 Standby 状态:

    Copy
    aws autoscaling describe-auto-scaling-instances --instance-ids i-5b73d709

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

    {
        "AutoScalingInstances": [
            {
                "AvailabilityZone": "us-west-2a",
                "InstanceId": "i-5b73d709",
                "AutoScalingGroupName": "my-asg",
                "HealthStatus": "HEALTHY",
                "LifecycleState": "Standby",
                "LaunchConfigurationName": "my-lc"
            }
        ]
    }
  4. 您可以根据需要更新实例或排查实例的问题。当您完成后,请继续下一步以将实例恢复运行。

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

    Copy
    aws autoscaling exit-standby --instance-ids i-5b73d709 --auto-scaling-group-name my-asg

    以下为响应示例:

    {
        "Activities": [
            {
                "Description": "Moving EC2 instance out of Standby: i-5b73d709",
                "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-5b73d709 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 命令验证实例是否已恢复运行。

    Copy
    aws autoscaling describe-auto-scaling-instances --instance-ids i-5b73d709

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

    {
        "AutoScalingInstances": [
            {
                "AvailabilityZone": "us-west-2a",
                "InstanceId": "i-5b73d709",
                "AutoScalingGroupName": "my-asg",
                "HealthStatus": "HEALTHY",
                "LifecycleState": "InService",
                "LaunchConfigurationName": "my-lc"
            }
        ]
    }