View a markdown version of this page

通过手动选择实例类型来创建混合实例组 - Amazon EC2 Auto Scaling

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

通过手动选择实例类型来创建混合实例组

本主题介绍如何通过手动选择实例类型在单个自动扩缩组中启动多种实例类型。

如果您希望使用实例属性作为选择实例类型的标准,请参阅 使用基于属性的实例类型选择创建混合实例组。

前提条件

创建混合实例组(控制台)

使用以下过程创建混合实例组,手动选择您的组可以启动的实例类型。为了帮助您高效地完成这些步骤,我们跳过了一些可选部分。

要查看混合实例组的最佳实践,请参阅创建混合实例组的设置概述。

创建一个混合实例组
  1. 在上打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 在屏幕顶部的导航栏中,选择在创建启动模板时使用的同一 AWS 区域 。

  3. 选择创建自动扩缩组。

  4. 在选择启动模板或配置页面上,对于自动扩缩组名称,输入自动扩缩组的名称。

  5. 要选择启动模板,请执行以下操作:

    1. 对于启动模板,请选择现有启动模板。

    2. 对于 Launch template version(启动模板版本),选择自动扩缩组在扩展时使用启动模板的默认版本、最新版本还是特定版本。

    3. 验证您的启动模板是否支持您计划使用的所有选项,然后选择 Next(下一步)。

  6. 在选择实例启动选项页面上,执行以下操作:

    1. 对于 Instance type requirements(实例类型要求),选择 Override launch template(覆盖启动模板),然后选择 Manually add instance types(手动添加实例类型)。

    2. 选择您的实例类型。您可以使用我们的建议作为起点。默认情况下,将选择 Family and generation flexible(系列和世代灵活)。

      • 要更改实例类型的顺序,请使用箭头。如果您选择支持优先级排序的分配策略,则实例类型顺序将设置其启动优先级。

      • 要删除实例类型,请选择 X。

      • (可选)对于权重列中的方框,为每个实例类型分配一个相对权重。要执行此操作,请输入该类型的实例计入组所需容量的单元数量。如果实例类型提供不同的 vCPU、内存、存储或网络带宽功能,则执行此操作可能很有用。有关更多信息,请参阅 配置自动扩缩组以使用实例权重。

        请注意,如果您选择使用大小灵活建议,则属于本部分的所有实例类型都将自动获得权重值。如果您不想指定任何权重,则请清除 Weight(权重)列中所有实例类型的方框。

    3. 在 Instance purchase options(实例购买选项)下,对于 Instances distribution(实例分配),分别指定要启动的按需型实例和竞价型实例在该组中所占的百分比。如果您的应用程序无状态、容错,并且可以处理中断的实例,则可以指定更高的竞价型实例百分比。

    4. (可选)如果您指定了一个竞价型实例百分比,请选中包括按需型基本容量旁边的复选框,然后指定按需型实例在自动扩缩组的最小初始容量中必须达到的数量。超出基本容量的任何内容都使用实例分配设置来确定要启动多少按需实例和 Spot 实例。

    5. 在 Allocation strategies (分配策略) 下,对于 On-Demand allocation strategy (按需分配策略),选择分配策略。当您手动选择实例类型时,默认情况下将选择 Prioritized(优先)。

    6. 对于 Spot allocation strategy(竞价型分配策略),选择分配策略。默认情况下,将选择 Price capacity optimized(价格容量优化)。

      如果您选择容量优化,则可以选择选中确定实例类型的优先级复选框,以便让 Amazon EC2 Auto Scaling 根据您的实例类型列出的顺序选择首先启动哪个实例类型。

    7. 对于容量再平衡,选择启用还是禁用容量再平衡。使用容量再平衡功能,以自动响应竞价型实例因竞价中断而即将终止的情况。有关更多信息,请参阅 Auto Scaling 进行容量再平衡以替换存在风险的竞价型实例。

    8. 在 Network (网络) 下,对于 VPC,选择相应的 VPC。自动扩缩组必须与您在启动模板中指定的安全组创建在相同的 VPC 中。

    9. 对于 Availability Zones and subnets (可用区和子网),选择指定 VPC 中的一个或多个子网。可以在多个可用区中使用子网以提供高可用性。有关更多信息,请参阅 选择 VPC 子网时的注意事项。

    10. 选择下一步、下一步。

  7. 对于 Configure group size and scaling policies(配置组大小和扩缩策略)步骤,请执行以下操作:

    1. 在组大小下,对于所需容量,请输入要启动的实例的初始数量。

      默认情况下,所需容量以实例数量表示。如果您为实例类型分配了权重,则必须将此值转换为用于分配权重的相同计量单位,例如 v 的数量CPUs。

    2. 在扩展部分的扩展限制下,如果所需容量的新值大于所需的最小容量和最大所需容量,则所需的最大容量将自动增加到新的所需容量值。您可以按需更改这些限制。有关更多信息,请参阅 为自动扩缩组设置扩缩限制。

  8. 选择 Skip to review (跳转以查看)。

  9. 在 Review(查看)页面上,选择 Create Auto Scaling group(创建 Auto Scaling 组)。

创建混合实例组 (AWS CLI)

使用命令行创建一个混合实例组

使用以下命令之一:

示例配置

以下示例配置显示如何使用不同的竞价分配策略创建混合实例组。

注意

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

示例 1:使用 capacity-optimized 分配策略启动竞价型实例

以下create-auto-scaling-group命令创建一个 Auto Scaling 组,该组指定了以下内容:

  • 作为按需型实例 (0) 启动的组的百分比以及以 (1) 开头的按需实例的基本数量。

  • 按优先级顺序(c5.large、c5a.large、m5.large、m5a.large、c4.large、m4.large、c3.large、m3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127、subnet-6194ea3b、subnet-c934b782)。每个子网都对应不同的可用区。

  • 启动模板 (my-launch-template) 和启动模板版本 ($Default)。

Amazon EC2 Auto Scaling 尝试满足您的按需容量时,它会首先启动 c5.large 实例类型。竞价型实例来自每个可用区中基于竞价型实例容量的最佳竞价池。

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

config.json 文件包含以下代码。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "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" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

或者,您可以使用以下create-auto-scaling-group命令创建 Auto Scaling 组。这将引用 YAML 文件作为自动扩缩组的唯一参数。

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

config.yaml 文件包含以下内容。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: 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 InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

示例 2:使用 capacity-optimized-prioritized 分配策略启动竞价型实例

以下create-auto-scaling-group命令创建一个 Auto Scaling 组,该组指定了以下内容:

  • 作为按需型实例 (0) 启动的组的百分比以及以 (1) 开头的按需实例的基本数量。

  • 按优先级顺序(c5.large、c5a.large、m5.large、m5a.large、c4.large、m4.large、c3.large、m3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127、subnet-6194ea3b、subnet-c934b782)。每个子网都对应不同的可用区。

  • 启动模板 (my-launch-template) 和启动模板版本 ($Latest)。

Amazon EC2 Auto Scaling 尝试满足您的按需容量时,它会首先启动 c5.large 实例类型。当 Amazon EC2 Auto Scaling 尝试满足您的竞价容量时,它会尽最大努力遵守实例类型优先级。但它首先会针对容量进行优化。

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

config.json 文件包含以下代码。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "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" } ] }, "InstancesDistribution": { "OnDemandBaseCapacity": 1, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized-prioritized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

或者,您可以使用以下create-auto-scaling-group命令创建 Auto Scaling 组。这将引用 YAML 文件作为自动扩缩组的唯一参数。

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

config.yaml 文件包含以下内容。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: 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 InstancesDistribution: OnDemandBaseCapacity: 1 OnDemandPercentageAboveBaseCapacity: 0 SpotAllocationStrategy: capacity-optimized-prioritized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

示例 3:使用在两个池之间不同的 lowest-price 分配策略启动竞价型实例

以下create-auto-scaling-group命令创建一个 Auto Scaling 组,该组指定了以下内容:

  • 作为按需实例启动的组的百分比 (50)。(这不会指定要开始使用的按需型实例的基本数量。)

  • 按优先级顺序(c5.large、c5a.large、m5.large、m5a.large、c4.large、m4.large、c3.large、m3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127、subnet-6194ea3b、subnet-c934b782)。每个子网都对应不同的可用区。

  • 启动模板 (my-launch-template) 和启动模板版本 ($Latest)。

Amazon EC2 Auto Scaling 尝试满足您的按需容量时,它会首先启动 c5.large 实例类型。对于您的竞价容量,Amazon EC2 Auto Scaling 尝试在每个可用区中的两个价格最低的池中平均启动竞价型实例。

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

config.json 文件包含以下代码。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "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" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 50, "SpotAllocationStrategy": "lowest-price", "SpotInstancePools": 2 } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

或者,您可以使用以下create-auto-scaling-group命令创建 Auto Scaling 组。这将引用 YAML 文件作为自动扩缩组的唯一参数。

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

config.yaml 文件包含以下内容。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: 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 InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 50 SpotAllocationStrategy: lowest-price SpotInstancePools: 2 MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

示例 4:使用 price-capacity-optimized 分配策略启动 Spot 实例

以下create-auto-scaling-group命令创建一个 Auto Scaling 组,该组指定了以下内容:

  • 作为按需实例启动的组的百分比 (30)。(这不会指定要开始使用的按需型实例的基本数量。)

  • 按优先级顺序(c5.large、c5a.large、m5.large、m5a.large、c4.large、m4.large、c3.large、m3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127、subnet-6194ea3b、subnet-c934b782)。每个子网都对应不同的可用区。

  • 启动模板 (my-launch-template) 和启动模板版本 ($Latest)。

Amazon EC2 Auto Scaling 尝试满足您的按需容量时,它会首先启动 c5.large 实例类型。对于您的竞价型容量,Amazon EC2 Auto Scaling 将尝试从竞价型实例池启动竞价型实例,这些竞价型实例池不仅具有尽可能低的价格,对于正在启动的实例数量而言还具有最佳容量。

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

config.json 文件包含以下代码。

{ "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "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" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 30, "SpotAllocationStrategy": "price-capacity-optimized" } }, "MinSize": 1, "MaxSize": 5, "DesiredCapacity": 3, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

或者,您可以使用以下create-auto-scaling-group命令创建 Auto Scaling 组。这将引用 YAML 文件作为自动扩缩组的唯一参数。

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

config.yaml 文件包含以下内容。

--- AutoScalingGroupName: my-asg MixedInstancesPolicy: 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 InstancesDistribution: OnDemandPercentageAboveBaseCapacity: 30 SpotAllocationStrategy: price-capacity-optimized MinSize: 1 MaxSize: 5 DesiredCapacity: 3 VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782