将 Auto Scaling 组配置为使用实例权重 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将 Auto Scaling 组配置为使用实例权重

当您使用多个实例类型时,您可以指定与每种实例类型关联的单位数量,然后使用相同的计量单位来指定组的容量。此容量规格选项称为权重。

例如,假设您运行一个计算密集型应用程序,该应用程序在至少具有 8 个 vCPU 和 15 GiB RAM 时性能最佳。如果您使用 c5.2xlarge 作为基本单元,以下任何 EC2 实例类型都将满足您的应用程序需求。

实例类型示例
实例类型 vCPU 内存 (GiB)
c5.2xlarge 8 16
c5.4xlarge 16 32
c5.12xlarge 48 96
c5.18xlarge 72 144
c5.24xlarge 96 192

默认情况下,无论大小如何,所有实例类型的权重都相同。换句话说,无论 Amazon EC2 Auto Scaling 启动大型还是小型实例类型,每个实例都会计入自动扩缩组的所需容量。

但是,对于权重,您可以分配一个数字值,该值指定与每种实例类型关联的单位数量。例如,如果实例大小不相同,c5.2xlarge 实例的权重可能为 2,而 c5.4xlarge(大两倍)的权重可能为 4,依此类推。然后,在 Amazon EC2 Auto Scaling 扩展组时,这些权重将转换为每个实例计入您所需容量中的单位数量。

权重不会更改 Amazon EC2 Auto Scaling 选择启动的实例类型;而是分配策略会做到这一点。有关更多信息,请参见 分配策略

重要

要使用 vCPU 数量或每种实例类型的内存量配置自动扩缩组以满足其所需容量,我们建议使用基于属性的实例类型选择。设置该DesiredCapacityType参数会根据您为此参数设置的值自动指定与每种实例类型关联的单位数。有关更多信息,请参阅 使用基于属性的实例类型选择创建一个混合实例组

注意事项

本节讨论有效实现权重的关键注意事项。

  • 选择几种符合应用程序性能需求的实例类型。根据每种实例类型的功能,确定每种实例类型应计入 Auto Scaling 组所需容量的权重。这些权重适用于当前和将来的实例。

  • 避免权重之间的距离过大。例如,当下一个较大的实例类型的权重为 200 时,不要将某个实例类型的权重指定为 1。此外,最小权重和最大权重之间的差异不能太极端。极端的重量差异会对性价比优化产生负面影响。

  • 以单位而不是实例为单位指定组的所需容量。例如,如果您使用基于 vCPU 的权重,请设置所需的内核数以及最小和最大值。

  • 设置权重和所需容量,使所需容量至少比最大权重大两到三倍。

更新现有群组时请注意以下几点:

  • 向现有组添加权重时,应包括当前正在使用的所有实例类型的权重。

  • 当您添加或更改权重时,Amazon EC2 Auto Scaling 将根据新的权重值启动或终止实例以达到所需的容量。

  • 如果您移除某个实例类型,则该类型的正在运行的实例会保留其上次权重,即使不再定义也是如此。

实例权重行为

当您使用实例权重时,Amazon EC2 Auto Scaling 的行为方式如下:

  • 当前容量等于或高于所需容量。如果启动的实例超过了剩余的所需容量单位,则当前容量可能会超过所需容量。例如,假设您指定了两个实例类型 c5.2xlargec5.12xlarge,并且您为 c5.2xlarge 分配了实例权重 2,为 c5.12xlarge 分配了实例权重 12。如果还剩 5 个单位才能实现所需容量,Amazon EC2 Auto Scaling 会预配置 c5.12xlarge,所需容量将超过 7 个单位。

  • 启动实例时,Amazon EC2 Auto Scaling 优先考虑在可用区之间分配容量并遵守分配策略,而不是超过所需容量。

  • 使用您的首选分配策略,Amazon EC2 Auto Scaling 可以超过最大容量限制,以保持可用区域间的平衡。Amazon EC2 Auto Scaling 强制执行的硬限制是您的所需容量加上您的最大重量。

配置自动扩缩组以使用权重

您可以将自动扩缩组配置为使用权重,如以下Amazon CLI示例所示。有关如何使用控制台的说明,请参阅通过手动选择实例类型来创建混合实例组

配置新自动扩缩组以使用权重 (Amazon CLI)

使用 create-auto-scaling-group 命令。例如,以下命令创建一个新的自动扩缩组,并通过指定以下内容分配权重:

  • 作为按需实例启动的组的百分比 (0)

  • 每个可用区中竞价型实例的分配策略(capacity-optimized)。

  • 按优先级顺序启动(m4.16xlargem5.24xlarge)的实例类型

  • 与实例类型之间的相对大小差异 (vCPU) 相对应的实例权重(1624

  • 要在其中启动实例的子网(subnet-5ea0c127subnet-6194ea3bsubnet-c934b782),每个子网对应于不同的可用区

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

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": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }
配置现有自动扩缩组以使用权重 (Amazon CLI)

使用 update-auto-scaling-group 命令。例如,以下命令通过指定以下内容向现有自动扩缩组中的实例类型分配权重:

  • 按优先级顺序启动(c5.18xlargec5.24xlargec5.2xlargec5.4xlarge)的实例类型

  • 与实例类型之间的相对大小差异 (vCPU) 相对应的实例权重(182424

  • 新增加的所需容量,大于最大权重

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

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

{ "AutoScalingGroupName": "my-existing-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "Overrides": [ { "InstanceType": "c5.18xlarge", "WeightedCapacity": "18" }, { "InstanceType": "c5.24xlarge", "WeightedCapacity": "24" }, { "InstanceType": "c5.2xlarge", "WeightedCapacity": "2" }, { "InstanceType": "c5.4xlarge", "WeightedCapacity": "4" } ] } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 100 }
使用命令行验证权重

使用以下命令之一:

每单位小时 Spot 价格示例

下表比较美国东部(弗吉尼亚州北部)不同可用区中竞价型实例的每小时价格和同一区域中按需型实例的价格。显示的价格是示例定价,而不是当前定价。这些价格是您每实例小时的成本。

示例:每实例小时的竞价定价
实例类型 us–east–1a us–east–1b us–east–1c 按需定价
c5.2xlarge 0.180 USD 0.191 USD 0.170 USD 0.34 USD
c5.4xlarge 0.341 USD 0.361 USD 0.318 USD 0.68 USD
c5.12xlarge 0.779 USD 0.777 USD 0.777 USD 2.04 USD
c5.18xlarge 1.207 USD 1.475 USD 1.357 USD 3.06 USD
c5.24xlarge 1.555 USD 1.555 USD 1.555 USD 4.08 USD

通过实例权重,您可以根据每单位小时的使用量来评估您的成本。您可以将某种实例类型的价格除以它表示的单位数来确定每单位小时价格。对于按需实例,部署一个实例类型时的每单位小时 价格与部署不同大小的相同实例类型时的价格相同。但是,相比之下,每单位小时 的 Spot 价格因竞价池而异。

以下示例显示了如何使用实例权重计算每单位小时竞价价格。为便于计算,假定您只想启动 us-east-1a 中的竞价型实例。下表列出了每单位小时的价格

示例:每单位小时 Spot 价格示例
实例类型 us–east–1a 实例权重 每单位小时价格
c5.2xlarge 0.180 USD 2 0.090 USD
c5.4xlarge 0.341 USD 4 0.085 USD
c5.12xlarge 0.779 USD 12 0.065 USD
c5.18xlarge 1.207 USD 18 0.067 USD
c5.24xlarge 1.555 USD 24 0.065 USD