使用或启用容量重新平衡 Amazon Web Services Management ConsoleAmazon CLI - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用或启用容量重新平衡 Amazon Web Services Management ConsoleAmazon CLI

您可以使用 Amazon Web Services Management Console 或 Amazon CLI 为 Auto Scaling 组启用容量重新平衡。Amazon EC2 Auto Scaling 会尝试主动替换您组中已收到再平衡建议的竞价型实例。

启用容量再平衡(控制台)

您可以在创建或更新 Auto Scaling 组时启用或禁用容量再平衡。

为新的 Auto Scaling 组启用容量再平衡
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选择 Create Auto Scaling group(创建 Auto Scaling 组)。

  3. 对于步骤 1:选择启动模板或配置,为自动扩缩组输入一个名称,选择一个启动模板,然后选择Next(下一步)以继续执行下一步骤。

  4. 对于步骤 2:选择实例启动选项以及对于实例类型要求,选择设置以创建混合实例组。这包括该实例可以启动的实例类型、实例购买选项以及竞价型实例和按需型实例的分配策略。预设情况下,这些设置均未配置。要进行配置,必须选择 Override launch template(覆盖启动模板)。有关创建混合实例组的更多信息,请参阅 Auto Scaling 组具有多个实例类型和购买选项

  5. 网络下,根据需要选择选项。验证要使用的子网是否位于不同的可用区中。

  6. 分配策略部分下,选择一个竞价型实例分配策略。要启用或禁用容量再平衡,请选中或清除 容量再平衡下的复选框。仅当您在 实例购买选项部分请求了自动扩缩组要作为竞价型实例启动的百分比时,才会看到此选项。

  7. 创建 Auto Scaling 组。

  8. (可选)根据需要添加生命周期挂钩。有关更多信息,请参阅 向你的 Auto Scaling 群组添加生命周期挂钩

为现有自动扩缩组启用或禁用容量再平衡
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

  2. 选中您的自动扩缩组旁边的复选框。这时将在页面底部打开一个拆分窗格。

  3. Details(详细信息)选项卡上,依次选择 Allocation strategies(分配策略)、Edit(编辑)。

  4. 分配策略部分下,可以通过选择或清除容量再平衡下的复选框来启用或禁用容量再平衡。

  5. 选择更新

启用容量再平衡(Amazon CLI)

以下示例说明如何使用启用和禁用容量重新平衡。 Amazon CLI

使用带有以下参数的 update-auto-scaling-groupo create-auto-scaling-groupr 命令:

  • --capacity-rebalance/--no-capacity-rebalance-表示是否启用容量重新平衡的布尔值。

在调用该create-auto-scaling-group命令之前,您需要配置为用于 Auto Scaling 组的启动模板的名称。有关更多信息,请参阅 为 Auto Scaling 组创建启动模板

注意

以下过程显示如何使用 JSON 或 YAML 格式的配置文件。如果使用 Amazon CLI 版本 1,则必须指定 JSON 格式的配置文件。如果您使用 Amazon CLI 版本 2,则可以指定格式为 YAML 或 JSON 的配置文件。

创建和配置新的 Auto Scaling 组
  • 使用以下create-auto-scaling-group命令创建新的 Auto Scaling 组并启用容量重新平衡。该命令引用 JSON 文件作为自动扩缩组的唯一参数。

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

    如果您还没有指定混合实例策略的 CLI 配置文件,请创建一个。

    将以下行添加到配置文件中的顶级 JSON 对象。

    { "CapacityRebalance": true }

    下面是一个 config.json 示例文件。

    { "AutoScalingGroupName": "my-asg", "DesiredCapacity": 12, "MinSize": 12, "MaxSize": 15, "CapacityRebalance": true, "MixedInstancesPolicy": { "InstancesDistribution": { "OnDemandBaseCapacity": 0, "OnDemandPercentageAboveBaseCapacity": 25, "SpotAllocationStrategy": "price-capacity-optimized" }, "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] } }, "TargetGroupARNs": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }
创建和配置新的 Auto Scaling 组
  • 使用以下create-auto-scaling-group命令创建新的 Auto Scaling 组并启用容量重新平衡。该命令引用 YAML 文件作为自动扩缩组的唯一参数。

    aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

    将以下行添加到 YAML 格式的配置文件。

    CapacityRebalance: true

    下面是一个 config.yaml 示例文件。

    --- AutoScalingGroupName: my-asg DesiredCapacity: 12 MinSize: 12 MaxSize: 15 CapacityRebalance: true MixedInstancesPolicy: InstancesDistribution: OnDemandBaseCapacity: 0 OnDemandPercentageAboveBaseCapacity: 25 SpotAllocationStrategy: price-capacity-optimized LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large TargetGroupARNs: - arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782
为现有 Auto Scaling 组启用容量再平衡
  • 使用以下update-auto-scaling-group命令启用容量重新平衡。

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --capacity-rebalance
验证是否为 Auto Scaling 组启用容量再平衡
  • 使用以下describe-auto-scaling-groups命令验证容量重新平衡是否已启用并查看详细信息。

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

    以下为响应示例。

    { "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "CapacityRebalance": true } ] }
禁用容量再平衡

使用带有--no-capacity-rebalance选项的update-auto-scaling-group命令可禁用容量重新平衡。

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --no-capacity-rebalance

有关容量再平衡的更多信息,请参阅 C Amazon ompute Blo g 上的 “使用适用于 EC2 Auto Scaling 的全新容量再平衡功能主动管理竞价型实例生命周期”。

有关 EC2 实例再平衡建议的更多信息,请参阅 Amazon EC2 用户指南中的 EC2 实例再平衡建议

要了解有关生命周期挂钩的更多信息,请参阅以下资源。

限制

  • Amazon EC2 Auto Scaling 只有在接收再平衡通知的实例未受横向缩减保护的情况下才能替换该实例。但是,横向缩减保护并不能阻止因 Spot 中断而终止。有关更多信息,请参阅 使用实例缩减保护来控制实例终止

  • 所有提供 Amazon EC2 Auto Scaling 的商业 Amazon Web Services 区域 均支持容量再平衡,但不包括中东(阿联酋)区域。