教程:将 Spot 实例集与实例权重一起使用 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

教程:将 Spot 实例集与实例权重一起使用

该教程使用名为 Example Corp 的虚构公司说明使用实例权重请求 Spot 队列的过程。

目标

Example Corp 是一家医药公司,该公司想要利用 Amazon EC2 的计算功能来筛查可能用于对抗癌症的化学成分。

规划

Example Corp 首先查看Spot 最佳实践。然后,Example Corp 确定了他们的 Spot 队列的以下要求。

实例类型

Example Corp 有一个计算和内存密集型应用程序,该应用程序在至少 60 GB 内存和八个虚拟 CPU (vCPU) 的情况下性能最佳。他们希望以尽可能低的价格为该应用程序提供尽可能多的这些资源。Example Corp 认定以下任意 EC2 实例类型都能满足其需求:

实例类型 内存 (GiB) vCPU

r3.2xlarge

61

8

r3.4xlarge

122

16

r3.8xlarge

244

32

以单位数表示的目标容量

采用实例权重,目标容量可以等于几个实例 (默认) 或一些因素 (如内核 (vCPU)、内存 (GiB) 和存储 (GB)) 的组合。将其应用程序的基本要求 (60 GB RAM 和八个 vCPU) 作为 1 个单位,Example Corp 决定 20 倍此数量可满足其需求。因此该公司将其 Spot 队列请求的目标容量设置为 20。

实例权重

确定目标容量后,Example Corp 计算了实例权重。为了计算每个实例类型的实例权重,他们按如下所示确定每个实例类型需要多少单位才能达到目标容量:

  • r3.2xlarge (61.0 GB, 8 vCPUs) = 1 个 20 单位

  • r3.4xlarge (122.0 GB, 16 vCPUs) = 2 个 20 单位

  • r3.8xlarge (244.0 GB, 32 vCPUs) = 4 个 20 单位

因此,Example Corp 在其 Spot 队列请求中将实例权重 1、2 和 4 分配给相应的启动配置。

每单位小时价格

Example Corp 将每实例小时按需价格作为其价格的起点。他们也可以使用最近的 Spot 价格或两者的组合。为了计算每单位小时价格,他们将每实例小时起始价格除以权重。例如:

实例类型 按需价格 实例权重 每单位小时价格

r3.2xLarge

0.7 美元

1

0.7 美元

r3.4xLarge

1.4 美元

2

0.7 美元

r3.8xLarge

2.8 美元

4

0.7 美元

Example Corp 可能会使用每单位小时全局价格 0.7 美元,这对于所有三种实例类型来说是非常有竞争力的。他们可能还会使用每单位小时全局价格 0.7 USD,并在 r3.8xlarge 启动规范中使用特定的每单位小时价格 0.9 USD。

验证权限

在创建 Spot 队列请求之前,Example Corp 会验证它是否拥有具备所需权限的 IAM 角色。有关更多信息,请参阅Spot 队列权限

创建请求

Example Corp 为其竞价型实例集请求创建一个具有以下配置的文件(config.json):

{ "SpotPrice": "0.70", "TargetCapacity": 20, "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role", "LaunchSpecifications": [ { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.2xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 1 }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.4xlarge", "SubnetId": "subnet-482e4972", "WeightedCapacity": 2 }, { "ImageId": "ami-1a2b3c4d", "InstanceType": "r3.8xlarge", "SubnetId": "subnet-482e4972", "SpotPrice": "0.90", "WeightedCapacity": 4 } ] }

Example Corp 使用 request-spot-fleet 命令创建 Spot 队列请求。

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

有关更多信息,请参阅 Spot 队列请求类型

执行

分配策略确定竞价型实例所来自的 Spot 容量池。

使用 lowestPrice 策略(这是默认策略)时,Spot 实例来自在执行时具有最低每单位价格的池。为了提供 20 个单位的容量,竞价型实例集有三种做法:启动 20 个 r3.2xlarge 实例(20 除以 1)、10 个 r3.4xlarge 实例(20 除以 2)或 5 个 r3.8xlarge 实例(20 除以 4)。

如果 Example Corp 使用 diversified 策略,则 Spot 实例来自所有三个池。竞价型实例集会启动 6 个 r3.2xlarge 实例(提供 6 个单位)、3 个 r3.4xlarge 实例(提供 6 个单位)和 2 个 r3.8xlarge 实例(提供 8 个单位),总共 20 个单位。