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

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

Amazon A EC2 uto Scaling 的手动扩展

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

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

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

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

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

Console
要更改您自动扩缩组的大小
  1. 在上打开亚马逊EC2控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

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

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

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

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

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

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

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

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

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

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

    • 运行状况” 列显示对您的实例进行 Amazon A EC2 uto 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 A EC2 uto 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\"}" } ] }

此选项在控制台中不可用。但是,您可以使用亚马逊EC2控制台的实例页面来终止您的 Auto Scaling 组中的实例。当您执行此操作时,Amazon A EC2 uto Scaling 会检测到该实例已停止运行,并在运行状况检查过程中自动替换该实例。在终止该实例后需要一两分钟的时间才能启动新实例。有关如何终止实例的信息,请参阅 Amazon EC2 用户指南中的终止实例。

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