通过手动选择实例类型来创建混合实例组 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

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

先决条件

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

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

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

创建一个混合实例组
  1. 访问 https://console.aws.amazon.com/ec2/,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    6. 对于 Spot allocation strategy(竞价型分配策略),选择分配策略。默认情况下,将选择 Price capacity optimized(价格容量优化)。默认情况下,将隐藏 Lowest price(最低价格),仅在您选择 Show all strategies(显示所有策略)时才会出现。

      • 如果您选择最低价格,则请输入价格最低的池的数量,以跨价格最低的池实现多样化。

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

    7. 对于容量再平衡,选择启用还是禁用容量再平衡。使用容量再平衡功能,以自动响应竞价型实例因竞价中断而即将终止的情况。有关更多信息,请参阅 使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

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

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

    10. 选择下一步下一步

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

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

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

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

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

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

创建混合实例组 (Amazon CLI)

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

使用以下命令之一:

示例配置

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

注意

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

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

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

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

  • 按优先级顺序(c5.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127subnet-6194ea3bsubnet-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.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127subnet-6194ea3bsubnet-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.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127subnet-6194ea3bsubnet-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.largec5a.largem5.largem5a.largec4.largem4.largec3.largem3.large)启动的实例类型。

  • 要在其中启动实例的子网(subnet-5ea0c127subnet-6194ea3bsubnet-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