Amazon EC2 Auto Scaling 的手动扩缩 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EC2 Auto Scaling 的手动扩缩

您可以随时手动调整 Auto Scaling 组中的 EC2 实例数量。手动更改实例计数的过程称为手动扩展。当不需要自动缩放或您想进行一次性容量更改时,手动扩展可能很有用。

在您手动扩展群组后,Amazon EC2 Auto Scaling 会根据您定义的扩展策略和计划操作恢复正常的自动扩展活动。对于启用了默认实例预热的群组,任何新实例都要经过一段预热期,然后才会开始为用于自动扩展的指标做出贡献。这个热身期有助于将小组稳定在新的容量上。有关更多信息,请参阅 为 Auto Scaling 组设置原定设置实例预热

有时,您可能需要在手动扩展组之前暂时禁用扩展策略和计划操作。这样可以防止手动扩展操作和自动扩展活动之间产生冲突。有关更多信息,请参阅 关闭缩放活动

更改现有自动扩缩组的所需容量

当您更改 Auto Scaling 组的所需容量时,Amazon EC2 Auto Scaling 会管理启动或终止实例以达到新的所需容量的过程。

Console
要更改您自动扩缩组的大小
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

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

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

  3. Details(详细信息)选项卡上,选择 Group details(组详细信息)、Edit (编辑)

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

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

  5. 完成后,选择 Update(更新)。

如果您将组的大小增加一个,请验证您的 Auto Scaling 组是否已启动另一个实例。

要验证 Auto Scaling 组的容量是否已更改
  1. 在 “活动” 选项卡的 “活动历史记录” 中,您可以查看与 Auto Scaling 组关联的活动的进度。Status(状态)列显示您实例的当前状态。当您的实例启动时,状态列将显示 Not yet in service。该实例启动后,状态会变为 Successful。您还可以使用刷新按钮来查看您的实例的当前状态。有关更多信息,请参阅 验证 Auto Scaling 组的扩缩活动

  2. 实例管理选项卡的实例中,您可以查看实例的状态。启动实例只需很短的时间。

    • Lifecycle(生命周期)列显示您的实例的状态。最初,您的实例处于 Pending 状态。在实例准备好接收流量时,其状态为 InService

    • 运行状况” 列显示对您的实例进行 Amazon EC2 Auto Scaling 运行状况检查的结果。

Amazon CLI

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

要更改 Auto Scaling 组的大小

使用set-desired-capacity命令更改 Auto Scaling 组的大小,如以下示例所示。

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

如果您选择遵守 Auto Scaling 组的默认冷却时间,必须指定 –-honor-cooldown 选项,如下面的示例所示。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的缩放冷却时间

aws autoscaling set-desired-capacity --auto-scaling-group-name my-asg \ --desired-capacity 2 --honor-cooldown
验证 Auto Scaling 组的大小

使用describe-auto-scaling-groups命令确认 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)

有时,您可能想要在自动扩缩组中手动进行横向缩减,但同时又想终止指定的实例。您可以使用-scaling-group 命令在 Auto terminate-instance-in-autoScaling-group 中手动缩放,并指定要终止的实例的 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 控制台的实例页面来终止您的 Auto Scaling 组中的实例。当您执行此操作时,Amazon EC2 Auto Scaling 会检测到该实例已停止运行,并在运行状况检查过程中自动替换该实例。在您终止实例后需要一两分钟才能启动新实例。有关终止实例的程序,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的终止实例

如果您终止组中的实例导致跨区域分布不均衡,Amazon EC2 Auto Scaling 会重新平衡该组以重新建立均衡分配,除非您暂停该AZRebalance流程。有关更多信息,请参阅 暂停和恢复 Amazon EC2 Auto Scaling 流程