Auto Scaling 组具有多个实例类型和购买选项 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Auto Scaling 组具有多个实例类型和购买选项

您可以启动并自动扩展单个 Auto Scaling 组中的一组按需实例和竞价型实例。除了享受使用竞价型实例的折扣外,您还可以使用预留实例或 Savings Plan 获得常规按需实例定价的折扣费率。以上所有因素的综合作用是帮助您进一步节约 EC2 实例成本,同时帮助您获得应用程序所需的规模和性能。

以下步骤将介绍如何创建自动扩缩组:

  • 指定用于启动实例的启动模板。

  • 选择要在其中启动您的自动扩缩组的 VPC 和子网。

  • 选择使用新要求覆盖启动模板的现有实例类型要求的选项。

  • 手动选择您的实例类型并确定其优先级。例如,您可以选择优先考虑可以从按需型实例的 Savings Plan 或预留实例折扣定价中受益的实例类型。

  • 指定要启动的按需型实例和竞价型实例的百分比。

  • 选择决定 Amazon EC2 Auto Scaling 将如何利用可能的实例类型来达到您的按需型和竞价型容量的分配策略。

  • 指定组大小,包括所需容量、最小容量和最大容量。

通过跨多个可用区中运行的多个实例类型部署应用程序以提高可用性。虽然您可以使用一种实例类型,但最佳实践是使用多种实例类型。这样,如果您选择的可用区中实例容量不足,则 Amazon EC2 Auto Scaling 可以启动另一种实例类型。如果竞价型实例的实例容量不足,则 Amazon EC2 Auto Scaling 将继续尝试从其他竞价型实例池启动。(它使用的池由您选择的实例类型和分配策略决定。) Amazon EC2 Auto Scaling 通过启动竞价型实例而不是按需型实例,帮助您利用竞价型实例节省的成本。

分配策略

以下分配策略决定 Auto Scaling 组如何根据可用的实例类型满足按需和竞价容量

Amazon EC2 Auto Scaling 首先尝试确保实例在您指定的可用区之间均匀平衡。然后,它根据指定的分配策略启动实例类型。

竞价型实例

Amazon EC2 Auto Scaling 提供了以下可用于竞价型实例的分配策略:

capacity-optimized

Amazon EC2 Auto Scaling 将从池中请求您的竞价型实例,对于启动的实例数量而言,该池具有最佳容量。

使用竞价型实例,定价会根据长期供需趋势缓慢发生变化,但容量会实时波动。capacity-optimized 策略通过查看实时容量数据并预测可用性最高的池,自动在可用性最高的池中启动 Spot 实例。这有助于最大限度减少工作负载的可能中断,这些工作负载可能会因重启工作和检查点操作而导致更高的中断成本。要使某些实例类型有更高的首先启动机会,请使用 capacity-optimized-prioritized

capacity-optimized-prioritized

设置启动模板覆盖的实例类型顺序,从最高优先级到最低优先级(从列表中的第一项到最后一项降序列出)。Amazon EC2 Auto Scaling 会尽最大努力遵守实例类型优先级,但首先会针对容量进行优化。对于必须最大限度地减少中断可能性,但对某些实例类型的偏好也很重要的工作负载来说,这是一个不错的选择。如果将按需型分配策略设置为 prioritized,则在满足按需型容量时将应用相同的优先级。

lowest-price

Amazon EC2 Auto Scaling 将在您为 Lowest priced pools (价格最低的池) 设置指定的 N 个竞价型池之间,使用可用区内价格最低的池请求您的竞价型实例。例如,如果您指定四种实例类型和四个可用区,则您的自动扩缩组可以访问最多 16 个竞价型池。(每个可用区内四个。) 如果您为分配策略指定两个竞价型池 (N=2),则您的自动扩缩组可以使用每个可用区的两个价格最低的池来满足竞价型容量。

由于此策略仅考虑实例价格而不考虑容量可用性,因此可能会导致较高的中断率。

price-capacity-optimized(推荐)

价格和容量优化分配策略同时考虑价格和容量,以选择中断可能性最小、价格尽可能低的竞价型实例池。

首先,建议您选择 price-capacity-optimized 分配策略并指定一组适合您的应用程序的实例类型。此外,您可以为 Amazon EC2 Auto Scaling 定义一系列可用区,以便在启动实例时从中选择。

有关 price-capacity-optimized 策略以及该策略能够提供帮助的应用场景的更多信息,请参阅 Amazon 博客中适用于 EC2 竞价型实例的价格容量优化分配策略的简介

(可选)您可以指定您的竞价型实例的最高价。如果未指定最高价,则默认最高价为按需价格。但您仍然可以享受竞价型实例提供的大幅折扣。这些折扣得以实现,是由于借助竞价型定价模型带来了稳定的竞价型定价。

按需实例

Amazon EC2 Auto Scaling 提供了以下可用于按需实例的分配策略:

lowest-price

Amazon EC2 Auto Scaling 会根据当前的按需价格自动部署每个可用区中价格最低的实例类型。

为了满足您的所需容量,您可能会在每个可用区中获得一种以上实例类型的按需型实例。这取决于您请求多大容量。

prioritized

在满足按需型容量时,Amazon EC2 Auto Scaling 组将根据启动模板覆盖列表中实例类型的顺序,确定首先使用哪个实例类型。例如,假设您按以下顺序指定三个启动模板覆盖:c5.largec4.largec3.large。在您的按需型实例启动时,自动扩缩组满足按需型容量的顺序是从 c5.large 开始,然后是 c4.large,最后是 c3.large

管理按需实例的优先级顺序时,请考虑以下事项:

您可以通过使用 Savings Plans 或预留实例预先支付使用费用,以获得按需实例的大幅折扣。有关更多信息,请参阅 Amazon EC2 定价页面。

  • 对于预留实例,如果 Amazon EC2 Auto Scaling 启动匹配的实例类型,则适用常规按需型实例定价的折扣价。因此,如果存在未使用的 c4.large 预留实例,则可以设置实例类型优先级,将预留实例的最高优先级赋予 c4.large 实例类型。当 c4.large 实例启动时,您可享受预留实例定价。

  • 通过 Savings Plans,当您使用 Amazon EC2 Instance Savings Plans 或 Compute Savings Plans 时,将适用常规按需型实例定价的折扣价。通过 Savings Plans,您可以更灵活地确定实例类型的优先级。只要您使用 Savings Plan 涵盖的实例类型,就可以按任何优先级顺序设置它们。您也可以偶尔更改实例类型的整个顺序,同时仍可享受 Savings Plan 折扣费率。有关 Savings Plans 的更多信息,请参阅 Savings Plans 用户指南

竞价型实例的最佳实践

在创建 Auto Scaling 组以请求竞价型实例之前,请查看适用于 Linux 实例的 Amazon EC2 用户指南中的 EC2 竞价的最佳实践。使用这些最佳实践规划您的请求,以便以可能的最低价格预置需要的实例类型。还建议执行以下操作:

  • 不要指定最高价格。如果您未收到任何竞价型实例 (例如当您的最高价太低时),您的应用程序可能不运行。默认最高价格为按需型价格,您只需为您启动的竞价型实例支付竞价型价格。当竞价型价格低于最高价格时,是否满足您的请求取决于可用性。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的定价和节省

  • 一条很好的经验法则是,对于每种工作负载,灵活地在至少 10 种实例类型之间进行选择。此外,还要确保所有可用区配置为在 VPC 中使用,并为工作负载选择了这些可用区。由于可用区内每个实例类型的容量分开波动,因此,如果您灵活使用实例类型,则通常可以获得更多计算容量。

  • 不要局限于最热门的新实例类型。选择老一代实例类型往往会导致中断较少,因为按需客户对它们的需求较少。

  • 启用容量再平衡。执行此操作时,Amazon EC2 Auto Scaling 将尝试在 Amazon EC2 Spot 服务通知竞价型实例处于较高的中断风险时启动竞价型实例。启动新实例后,它会终止旧实例。有关更多信息,请参阅使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

  • 建议您使用 price-capacity-optimized 分配策略而不是 lowest-price 分配策略,以避免从中断可能性较高的池中请求竞价型实例。

  • 如果您选择 lowest-price 分配策略并运行 Web 服务,则请指定较大的竞价型池数量,如 N=10。这样做可以减少其中一个可用区中的池暂时不可用时造成的竞价型实例中断的影响。如果您运行批处理或其他非关键任务应用程序,则可以指定较小竞价型池数量,例如,N=2。这样仅会从每个可用区中价格最低的竞价型池中预调配竞价型实例。

    Amazon EC2 Auto Scaling 会尽力尝试根据您指定的 N 个池提取竞价型实例。如果池在满足所需容量之前耗尽竞价容量,则 Amazon EC2 Auto Scaling 将继续通过从下一个价格最低的池中提取来满足您的请求。为了达到您所需的容量,您可能会从超过指定的 N 个池接收竞价型实例。同样,如果大多数池没有竞价容量,则您可能会从少于指定的 N 个池接收完整所需容量。

如果您打算指定最高价格,则可以使用 Amazon CLI 或 SDK 创建 Auto Scaling 组,但务必谨慎。如果您的最高价低于选定的实例类型的 Spot 价格,则不会启动您的竞价型实例。

控制按需型实例的比例

您可以完全控制 Auto Scaling 组中作为按需实例启动的实例所占比例。为确保您始终拥有实例容量,您可以指定组中作为按需型实例启动的百分比。或者,您也可以指定要开始使用的按需型实例的基本数量。如果您指定按需型实例的基本容量,则 Amazon EC2 Auto Scaling 将等待,直到它在组横向扩展时启动按需型实例的基本容量之后,才会启动竞价型实例。超出基本容量的任何内容都使用按需百分比来确定要启动多少按需型实例和竞价型实例。您可以指定 0 到 100 之间的任意数字来作为按需百分比。

Amazon EC2 Auto Scaling 将百分比转换为等效数量的实例。如果结果创建一个小数,Amazon EC2 Auto Scaling 向上舍入为下一个整数,以支持按需实例。

下表展示了自动扩缩组随着规模的增加而采取的行为。

示例:扩展行为
实例分配 各购买选项的运行实例总数
10 20 30 40
示例 1
On-Demand base: 10 10 10 10 10
On-Demand percentage above base: 50% 0 5 10 15
Spot percentage: 50% 0 5 10 15
示例 2
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 10 20 30 40
示例 3
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 60% 6 12 18 24
Spot percentage: 40% 4 8 12 16
示例 4。
On-Demand base: 0 0 0 0 0
On-Demand percentage above base: 100% 10 20 30 40
Spot percentage: 0% 0 0 0 0
示例 5
On-Demand base: 12 10 12 12 12
On-Demand percentage above base: 0% 0 0 0 0
Spot percentage: 100% 0 8 18 28

先决条件

创建启动模板,其中包括启动 EC2 实例所需的参数,例如 Amazon Machine Image (AMI) 和安全组。有关更多信息,请参阅为 Auto Scaling 组创建启动模板

验证启动模板尚未请求竞价型实例。

验证您拥有使用启动模板所需的权限。当您使用启动模板时,将检查您的 ec2:RunInstances 权限。如果启动模板指定了 IAM 角色,也会检查您的 iam:PassRole 权限。有关更多信息,请参阅启动模板支持

创建包括竞价型实例和按需型实例的 Auto Scaling 组(控制台)

完成以下步骤以创建您可以扩展的竞价型实例和按需型实例队组。

使用以下过程选择您的组可以启动的单个实例类型。如果您希望使用实例属性作为选择实例类型的标准,请通过指定您需要的 vCPU 数量和内存来配置实例类型要求。有关更多信息,请参阅示例:使用基于属性的实例类型选择创建 Auto Scaling 组。您还可以指定存储类型、网络接口、CPU 制造商和加速器类型等其他属性。

创建包括竞价型实例和按需实例的 Auto Scaling 组
  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. 要选择要在其中启动实例的 VPC 和子网,请执行以下操作:

    1. Choose instance launch options (选择实例启动选项) 页面的 Network (网络) 下方,对于 VPC,选择相应的 VPC。Auto Scaling 组必须与您在启动模板中指定的安全组创建在相同的 VPC 中。

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

  7. 要手动选择您的组可以启动的单个实例类型,请执行以下操作:

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

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

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

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

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

      注意

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

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

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

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

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

      注意

      如果您选择了 Lowest price(最低价格),则请输入价格最低的池的数量,以跨价格最低的池实现多样化。如果您选择了 Capacity optimized(容量优化),则可以选择选中 Prioritize instance types(确定实例类型的优先级)复选框,以便让 Amazon EC2 Auto Scaling 根据您的实例类型列出的顺序选择首先启动哪个实例类型。

    7. 对于 Capacity rebalance (容量再平衡),选择启用还是禁用容量再平衡。

      如果您选择了一个竞价型实例百分比,则可以使用容量再平衡功能,以自动响应竞价型实例因竞价中断而即将终止的情况。有关更多信息,请参阅使用容量重新平衡来处理 Amazon EC2 竞价型实例中断

    8. 完成之后,选择 Next(下一步)两次,以转至 Configure group size and scaling policies(配置组大小和扩缩策略)页面。

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

    1. Desired capacity(所需容量)输入您的 Auto Scaling 组的初始大小,然后根据需要更新 Minimum capacity(最小容量)和 Maximum capacity(最大容量)。有关更多信息,请参阅为 Auto Scaling 组设置容量限制

      注意

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

    2. (可选)将组配置为通过指定目标跟踪扩展策略进行扩展。或者,在您创建组后指定此策略。有关更多信息,请参阅Amazon EC2 Auto Scaling 的目标跟踪扩缩策略

    3. (可选)启用实例横向缩减保护功能,该功能可以防止您的自动扩缩组在横向缩减时终止实例。有关更多信息,请参阅实例横向缩减保护

    4. 在完成后,选择下一步

  9. (可选)要在自动扩缩组扩展时收到通知,请为 Add notification(添加通知)配置通知,然后选择 Next(下一步)。有关更多信息,请参阅在 Auto Scaling 组扩展时获取 Amazon SNS 通知

  10. (可选)要添加标签,请选择 Add tag(添加标签),为每个标签提供标签键和值,然后选择 Next(下一步)。有关更多信息,请参阅为 Auto Scaling 组和实例添加标签

  11. 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 命令创建自动扩缩组。这将引用 YAML 文件作为自动扩缩组的唯一参数,而不是 JSON 文件。

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 命令创建自动扩缩组。这将引用 YAML 文件作为自动扩缩组的唯一参数,而不是 JSON 文件。

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 命令创建自动扩缩组。这将引用 YAML 文件作为自动扩缩组的唯一参数,而不是 JSON 文件。

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 命令创建自动扩缩组。这将引用 YAML 文件作为自动扩缩组的唯一参数,而不是 JSON 文件。

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

验证您的自动扩缩组配置和已启动的实例 (Amazon CLI)

要检查 Auto Scaling 组是否已正确配置以及它是否已启动实例,请使用 describe-auto-scaling-groups 命令。验证混合实例策略和子网列表是否存在且配置正确。如果实例已启动,您将看到实例及其状态的列表。要查看实例启动所产生的扩展活动,请使用 describe-scaling-activities 命令。您可以监控正在进行和最近完成的扩展活动。有关更多信息,请参阅验证 Auto Scaling 组的扩缩活动