Amazon EC2 Auto Scaling 的手动扩缩
您可以随时手动更改现有 Auto Scaling 组的大小。您可以更新 Auto Scaling 组的所需容量,或更新附加到 Auto Scaling 组的实例。当不需要自动扩展或需要将容量保持为固定数量的实例时,手动扩展组非常有用。
更改 Auto Scaling 组的大小(控制台)
在更改 Auto Scaling 组的所需容量时,Amazon EC2 Auto Scaling 将管理启动或终止实例的过程以维护新的组大小。
以下示例假设您创建了一个最小大小为 1,最大大小为 5 的 Auto Scaling 组。因此,该组目前正在运行的实例是 1 个。
要更改 Auto Scaling 组的大小
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中您的 Auto Scaling 组旁边的复选框。
这时将在 Auto Scaling groups(Auto Scaling 组)页面底部打开一个拆分窗格。
-
在 Details(详细信息)选项卡上,选择 Group details(组详细信息)、Edit (编辑)。
-
对于 Desired capacity(所需容量),请将所需容量增加一。例如,如果当前值是
1
,请输入2
。理想容量必须小于或等于组的最大容量。如果 Desired capacity(所需容量)的新值大于 Maximum capacity(最大容量),则必须更新 Maximum capacity(最大容量)。
-
完成后,选择 Update(更新)。
接下来,验证 Auto Scaling 组是否已另外启动一个实例。
要验证 Auto Scaling 组的容量是否已更改
-
在 Activity(活动)选项卡上的 Activity history(活动历史状态)中,Status(状态)列显示实例的当前状态。使用刷新按钮,直到您看到实例的状态更改为 Successful (成功)。这表明您的 Auto Scaling 组已成功启动新实例。
注意
如果实例无法启动,您可以在Amazon EC2 Auto Scaling 问题排查中找到问题排查提示。
-
在 Instance management (实例管理) 选项卡的 Instances (实例) 中,Lifecycle (生命周期) 列显示实例的状态。启动实例只需很短的时间。实例启动后,其状态将更改为
InService
。您可以看到 Auto Scaling 组启动了1
个新实例,并且实例处于InService
状态。
更改 Auto Scaling 组的大小(Amazon CLI)
更改 Auto Scaling 组的大小时,Amazon EC2 Auto Scaling 将管理启动或终止实例的过程以维护新的组大小。默认行为是不等待默认冷却时间完成,但您可以覆盖默认设置并等待冷却时间完成。有关更多信息,请参阅Amazon EC2 Auto Scaling 的缩放冷却时间。
以下示例假设您创建了一个最小大小为 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
选项,如下面的示例所示。
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": [
{
"AutoScalingGroupARN": "arn",
"ServiceLinkedRoleARN": "arn",
"TargetGroupARNs": [],
"SuspendedProcesses": [],
"LaunchTemplate": {
"LaunchTemplateName": "my-launch-template",
"Version": "1",
"LaunchTemplateId": "lt-050555ad16a3f9c7f"
},
"Tags": [],
"EnabledMetrics": [],
"LoadBalancerNames": [],
"AutoScalingGroupName": "my-asg",
"DefaultCooldown": 300,
"MinSize": 1,
"Instances": [
{
"ProtectedFromScaleIn": false,
"AvailabilityZone": "us-west-2a",
"LaunchTemplate": {
"LaunchTemplateName": "my-launch-template",
"Version": "1",
"LaunchTemplateId": "lt-050555ad16a3f9c7f"
},
"InstanceId": "i-05b4f7d5be44822a6",
"HealthStatus": "Healthy",
"LifecycleState": "Pending"
},
{
"ProtectedFromScaleIn": false,
"AvailabilityZone": "us-west-2a",
"LaunchTemplate": {
"LaunchTemplateName": "my-launch-template",
"Version": "1",
"LaunchTemplateId": "lt-050555ad16a3f9c7f"
},
"InstanceId": "i-0c20ac468fa3049e8",
"HealthStatus": "Healthy",
"LifecycleState": "InService"
}
],
"MaxSize": 5,
"VPCZoneIdentifier": "subnet-c87f2be0",
"HealthCheckGracePeriod": 300,
"TerminationPolicies": [
"Default"
],
"CreatedTime": "2019-03-18T23:30:42.611Z",
"AvailabilityZones": [
"us-west-2a"
],
"HealthCheckType": "EC2",
"NewInstancesProtectedFromScaleIn": false,
"DesiredCapacity": 2
}
]
}
注意 DesiredCapacity
显示了新值。Auto Scaling 组已启动另一个实例。