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

从 Auto Scaling 组中分离 EC2 实例

您可以从 Auto Scaling 组中移除(分离)处于 InService 状态的实例。分离实例之后,可以独立于 Auto Scaling 组的其余部分管理这些实例。通过分离实例,您可以:

  • 将实例从一个 Auto Scaling 组移出,然后将其附加到其他组。有关更多信息,请参阅将 EC2 实例附上 Auto Scaling 组。

  • 使用运行应用程序的现有实例创建 Auto Scaling 组,以此来对其进行测试。随后,您可以在测试完成后从 Auto Scaling 组中分离这些实例。

分离实例时,您可以选择按分离的实例数减少 Auto Scaling 组的所需容量。如果您选择不减少容量,Amazon EC2 Auto Scaling 会启动新实例以替换分离的实例。如果减少容量,但将多个实例从同一可用区分离,则除非暂停 AZRebalance 流程,否则 Amazon EC2 Auto Scaling 可以重新平衡可用区。有关更多信息,请参阅 暂停和恢复 Auto Scaling 组的进程

如果要分离的实例数将 Auto Scaling 组的大小降到最小容量以下,您必须先减少该组的最小容量,然后才能分离实例。

如果您将实例从已附加负载均衡器目标组或 Classic Load Balancer 的 Auto Scaling 组分离,则将从该负载均衡器取消注册实例。如果为负载均衡器启用了 Connection Draining,则 Amazon EC2 Auto Scaling 会等待未送达请求完成。

这些示例使用具有以下配置的 Auto Scaling 组:

  • Auto Scaling 组名称 = my-asg

  • 最小容量 = 1

  • 最大容量 = 5

  • 所需容量 = 4

  • 可用区域 = us-west-2a

分离实例(控制台)

使用以下步骤将实例与 Auto Scaling 组分离。

将实例与现有 Auto Scaling 组分离

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

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

    这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。

  3. Instance management(实例管理)选项卡上的 Instances(实例)中,选择一个实例,然后选择 Actions(操作)、Detach(分离)。

  4. Detach instance(分离实例)对话框中,选中该复选框可启动替换实例,取消选中该复选框可减少所需容量。选择 Detach instance(分离实例)。

分离实例(Amazon CLI)

使用以下步骤将实例与 Auto Scaling 组分离。

将实例与现有 Auto Scaling 组分离

  1. 使用以下 describe-auto-scaling-instances 命令列出当前实例。

    aws autoscaling describe-auto-scaling-instances

    以下示例响应显示该组有 4 个正在运行的实例。

    { "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" }, { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0c20ac468fa3049e8", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0787762faf1c28619", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0f280a4c58d319a8a", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" } ] }
  2. 使用以下 detach-instances 命令分离实例并减小所需容量。

    aws autoscaling detach-instances --instance-ids i-05b4f7d5be44822a6 \ --auto-scaling-group-name my-asg --should-decrement-desired-capacity
  3. 使用以下 describe-auto-scaling-instances 命令确认已分离实例。

    aws autoscaling describe-auto-scaling-instances

    以下示例响应显示现在有 3 个正在运行的实例。

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0c20ac468fa3049e8", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0787762faf1c28619", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-0f280a4c58d319a8a", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" } ] }