

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

# Amazon EC2 Auto Scaling 的手动扩缩
<a name="ec2-auto-scaling-scaling-manually"></a>

您可以随时手动调整自动扩缩组中的 EC2 实例数。手动更改实例数的这一过程称为*手动扩缩*。手动扩缩是自动扩缩的替代方案，尤其是在您想要进行一次性容量更改时。

在您手动扩缩组后，Amazon EC2 Auto Scaling 会根据您定义的扩缩策略和计划操作恢复正常的自动扩缩活动。对于启用了默认实例预热的组，任何新实例都要经过一段预热时间，然后才会开始贡献用于自动扩缩的指标。此预热时间有助于稳定组的新容量。有关更多信息，请参阅 [为 Auto Scaling 组设置原定设置实例预热](ec2-auto-scaling-default-instance-warmup.md)。

有时，您可能需要在手动扩缩组之前暂时禁用扩缩策略和计划操作。这样可以防止手动扩缩操作和自动扩缩活动之间产生冲突。有关更多信息，请参阅 [关闭扩缩活动](CHAP_Troubleshooting.md#turn-off-scaling-activities)。

**Topics**
+ [更改现有自动扩缩组的所需容量](#change-desired-capacity)
+ [终止您自动扩缩组中的实例（Amazon CLI）](#terminate-an-instance-aws-cli)

## 更改现有自动扩缩组的所需容量
<a name="change-desired-capacity"></a>

在更改自动扩缩组的所需容量时，Amazon EC2 Auto Scaling 将管理启动和终止实例的进程以达到新的所需大小。

------
#### [ Console ]

**要更改您自动扩缩组的大小**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 选中您的自动扩缩组旁边的复选框。

   这时将在页面底部显示一个拆分窗格。

1. 在 **Details**（详细信息）选项卡上，选择 **Group details**（组详细信息）、**Edit (编辑)**。

1. 对于**所需容量**，增加或减少所需容量。例如，要将组的大小加一，如果当前值为 `1`，则输入 `2`。

   如果**所需容量**的新值大于**所需的最小容量**和**所需的最大容量**，则**所需的最大容量**将自动增加到新的所需容量值。

1. 完成后，选择 **Update**（更新）。

验证您指定的组大小是否导致启动相同数量的实例。例如，如果您将组的大小加一，则请验证您的自动扩缩组是否已另外启动一个实例。

**要验证 Auto Scaling 组的容量是否已更改**

1. 在**活动**选项卡的**活动历史记录**中，您可以查看与自动扩缩组关联的活动的进度。**Status**（状态）列显示您实例的当前状态。当您的实例启动时，状态列将显示 `Not yet in service`。该实例启动后，状态会变为 `Successful`。您还可以使用刷新图标来查看实例的当前状态。有关更多信息，请参阅 [验证 Auto Scaling 组的扩缩活动](as-verify-scaling-activity.md)。

1. 在**实例管理**选项卡的**实例**中，您可以查看实例的状态。启动实例只需很短的时间。
   + **Lifecycle**（生命周期）列显示您的实例的状态。最初，您的实例处于 `Pending` 状态。在实例准备好接收流量时，其状态为 `InService`。
   + **运行状况**列显示对您的实例执行 Amazon EC2 Auto Scaling 运行状况检查的结果。

------
#### [ Amazon CLI ]

以下示例假设您创建了一个最小大小为 1，最大大小为 5 的 Auto Scaling 组。因此，该组目前正在运行的实例是 1 个。

**要更改 Auto Scaling 组的大小**  
使用[set-desired-capacity](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-desired-capacity.html)命令更改 Auto Scaling 组的大小，如以下示例所示。

```
aws autoscaling set-desired-capacity --auto-scaling-group-name my-asg \
  --desired-capacity 2
```

如果您选择遵守 Auto Scaling 组的默认冷却时间，必须指定 `–-honor-cooldown` 选项，如下面的示例所示。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 的缩放冷却时间](ec2-auto-scaling-scaling-cooldowns.md)。

```
aws autoscaling set-desired-capacity --auto-scaling-group-name my-asg \
  --desired-capacity 2 --honor-cooldown
```

**验证 Auto Scaling 组的大小**  
使用[describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html)命令确认 Auto Scaling 组的大小是否已更改，如以下示例所示。

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
```

以下是示例输出，其提供关于组和已启动实例的详细信息。

```
{
    "AutoScalingGroups": [
        {
            "AutoScalingGroupName": "my-asg",
            "AutoScalingGroupARN": "arn",
            "LaunchTemplate": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1",
                "LaunchTemplateId": "lt-050555ad16a3f9c7f"
            },
            "MinSize": 1,
            "MaxSize": 5,
            "DesiredCapacity": 2,
            "DefaultCooldown": 300,
            "AvailabilityZones": [
                "us-west-2a"
            ],
            "LoadBalancerNames": [],
            "TargetGroupARNs": [],
            "HealthCheckType": "EC2",
            "HealthCheckGracePeriod": 300,
            "Instances": [
                {
                    "ProtectedFromScaleIn": false,
                    "AvailabilityZone": "us-west-2a",
                    "LaunchTemplate": {
                        "LaunchTemplateName": "my-launch-template",
                        "Version": "1",
                        "LaunchTemplateId": "lt-050555ad16a3f9c7f"
                    },
                    "InstanceId": "i-05b4f7d5be44822a6",
                    "InstanceType": "t3.micro",
                    "HealthStatus": "Healthy",
                    "LifecycleState": "Pending"
                },
                {
                    "ProtectedFromScaleIn": false,
                    "AvailabilityZone": "us-west-2a",
                    "LaunchTemplate": {
                        "LaunchTemplateName": "my-launch-template",
                        "Version": "1",
                        "LaunchTemplateId": "lt-050555ad16a3f9c7f"
                    },
                    "InstanceId": "i-0c20ac468fa3049e8",
                    "InstanceType": "t3.micro",
                    "HealthStatus": "Healthy",
                    "LifecycleState": "InService"
                }
            ],
            "CreatedTime": "2019-03-18T23:30:42.611Z",
            "SuspendedProcesses": [],
            "VPCZoneIdentifier": "subnet-c87f2be0",
            "EnabledMetrics": [],
            "Tags": [],
            "TerminationPolicies": [
                "Default"
            ],
            "NewInstancesProtectedFromScaleIn": false,
            "ServiceLinkedRoleARN": "arn",
            "TrafficSources": []
        }
    ]
}
```

注意 `DesiredCapacity` 显示了新值。Auto Scaling 组已启动另一个实例。

------

## 终止您自动扩缩组中的实例（Amazon CLI）
<a name="terminate-an-instance-aws-cli"></a>

有时，您可能想要在自动扩缩组中手动进行横向缩减，但同时又想终止指定的实例。您可以使用-scaling-group 命令在 Auto [terminate-instance-in-autoScaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/terminate-instance-in-auto-scaling-group.html) 中手动缩放，并指定要终止的实例的 ID 和`--should-decrement-desired-capacity`选项，如以下示例所示。

```
aws autoscaling terminate-instance-in-auto-scaling-group \
  --instance-id i-026e4c9f62c3e448c --should-decrement-desired-capacity
```

以下是示例输出，其提供有关扩缩活动的详细信息。

```
{
    "Activities": [
        {
            "ActivityId": "b8d62b03-10d8-9df4-7377-e464ab6bd0cb",
            "AutoScalingGroupName": "my-asg",
            "Description": "Terminating EC2 instance: i-026e4c9f62c3e448c",
            "Cause": "At 2023-09-23T06:39:59Z instance i-026e4c9f62c3e448c was taken out of service in response to a user request, shrinking the capacity from 1 to 0.",
            "StartTime": "2023-09-23T06:39:59.015000+00:00",
            "StatusCode": "InProgress",
            "Progress": 0,
            "Details": "{\"Subnet ID\":\"subnet-6194ea3b\",\"Availability Zone\":\"us-west-2c\"}"
        }
    ]
}
```

此选项在控制台中不可用。但是，您可以使用 Amazon EC2 控制台的**实例**页面来终止自动扩缩组中的实例。当您执行此操作时，Amazon EC2 Auto Scaling 会检测到实例不再运行，并作为运行状况检查过程的一部分自动替换该实例。在终止该实例后需要一两分钟的时间才能启动新实例。有关如何终止实例的更多信息，请参阅《Amazon EC2 用户指南》**中的[终止实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/terminating-instances.html)。

如果您终止组中的实例，导致跨可用区分布不均衡，Amazon EC2 Auto Scaling 会重新平衡该组以重新建立均衡分配，除非您暂停 `AZRebalance` 进程。有关更多信息，请参阅 [暂停和恢复 Amazon EC2 Auto Scaling 进程](as-suspend-resume-processes.md)。