Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Spot 实例运行方式

要使用 Spot 实例,请创建一个 Spot 实例请求 Spot 队列请求。该请求包括您愿意为每个实例每小时支付的最高价 (您的出价) 以及其他约束 (例如,实例类型和可用区)。如果您的出价超过了指定实例当前的现货价格,并且指定的实例可用,将立即满足您的请求。否则,只要现货价格低于您的出价或者指定的实例可用,就会完成您的请求。在您终止 实Spot 例或者 Amazon EC2 必须停止或终止 Spot 实例 (也称为竞 Spot 价型实例中断) 之前,Spot 实例将保持运行。

当您使用 Spot 实例时,您必须做好应对中断的准备。随着对 Spot 实例需求的增长,或者 Spot 实例供应的减少,在现货价格上涨超过了您的出价时,Amazon EC2 可以中断您的 Spot 实例。当 Amazon EC2 中断 Spot 实例时,它会提供一个 Spot 实例中断通知,这将在 Amazon EC2 停止或终止实例前为其提供两分钟时间的警告。您不能为 Spot 实例启用终止保护。有关更多信息,请参阅 Spot 实例中断

如果 Amazon EBS 支持的实例是 Spot 实例,那么您无法停止和启动该实例,但可以重新启动或终止它。

在操作系统级别关闭 Spot 实例会导致 Spot 实例终止。这种情况无法改变。

竞价市场上供应和需求

AWS 持续评估每个 Spot 实例池中有多少 Spot 实例可用,监视已经为每个池出了什么价,然后将可用 Spot 实例预置给最高出价者。池的现货价格设置为该池中执行的最低出价。因此,您的出价必须高于现货价格,才会立即执行针对单个 Spot 实例的竞价请求。

例如,假设您创建了 Spot 实例请求,对应的 Spot 实例池只有五个 Spot 实例可供销售。您的出价为 0.10 USD,这也是当前现货价格。下表按照降序排名显示了当前出价。将执行出价 1-5。出价 5 (最后执行的出价) 将现货价格设置在 0.10 USD。出价 6 未执行。0.10 USD 这一相同出价的出价 3-5 按随机顺序排列。

出价 出价 当前现货价格 备注

1

1.00 USD

0.10 USD

2

1.00 USD

0.10 USD

3

0.10 USD

0.10 USD

4

0.10 USD

0.10 USD

您的出价

5

0.10 USD

0.10 USD

最后执行的出价 (设置现货价格)。每个人在相应时段内都会支付相同的现货价格。

— — —

— — —

竞价容量截止

6

$0.05

现在,假设此池的大小下降为 3。将执行出价 1-3。出价 3 (最后执行的出价) 将现货价格设置在 0.10 USD。出价 4-5 (也就是 0.10 USD) 未执行。如您所见,尽管现货价格没有变化,但由于竞价供应减少,包括您的出价在内的两个竞价将不再执行。

出价 出价 当前现货价格 备注

1

1.00 USD

0.10 USD

2

1.00 USD

0.10 USD

3

0.10 USD

0.10 USD

最后执行的出价 (设置现货价格)。每个人在相应时段内都会支付相同的现货价格。

— — —

— — —

竞价容量截止

4

0.10 USD

您的出价

5

0.10 USD

6

$0.05

要执行此池中单个实例的竞价请求,您的出价必须超过当前的现货价格 0.10 美元。如果您出价 0.101 美元,则将执行您的请求,出价 3 的 Spot 实例将中断,现货价格将变为 0.101 美元。如果您出价 2.00 美元,则出价 3 的 Spot 实例将中断,现货价格将变为 1.00 美元 (出价 2 的价格)。

请记住,不论您出价多高,您获得的 Spot 实例数都不会超过 Spot 实例池中可用的 Spot 实例数。如果池的大小下降为零,则该池中的所有 Spot 实例都将中断。

在启动组中启动 Spot 实例

在 Spot 实例请求中指定启动组,可以通知 Amazon EC2 只有在可以全部启动一组 Spot 实例时才启动。此外,如果 Spot 服务必须终止启动组中的一个实例 (例如,如果现货价格提高并超过您的出价),则必须终止该组中的所有实例。不过,如果由您终止启动组中的一个或多个实例,Amazon EC2 不会终止该启动组中的剩余实例。

虽然此选项非常有用,但添加此约束会减少完成您的 Spot 实例请求的几率。这还会增加您的 Spot 实例被终止的几率。

如果您创建了另一个成功的 Spot 实例请求并指定与之前成功请求相同 (现有) 的启动组,则新实例将添加到该启动组中。以后,在该启动组的一个实例终止时,启动组中的所有实例均会终止,这包括第一次请求和第二次请求启动的实例。

在可用区组中启动 Spot 实例

在 Spot 实例请求中指定可用区组,可以通知竞价服务在相同的可用区中启动一组 Spot 实例。Amazon EC2 不需要同时中断某个可用区组中的所有实例。如果 Amazon EC2 必须中断可用区组中的某个实例,剩余的实例仍保持运行。

虽然此选项非常有用,但添加此约束会减少完成您的 Spot 实例请求的几率。

如果您在 Spot 实例请求中指定了可用区组,但没有指定可用区,则竞价服务所采取的操作将取决于您指定的是 EC2-Classic 网络、默认 VPC 还是非默认 VPC。有关更多信息,请参阅 支持的平台

EC2-Classic

Amazon EC2 查找区域中价格最低的可用区,如果该组的最低出价高于该可用区中当前的现货价格,则在该可用区中启动您的 Spot 实例。只要现货价格一直低于该组的最低出价,Amazon EC2 就会一直等到有足够的容量来同时启动您的 Spot 实例。

默认 VPC

Amazon EC2 使用指定子网的可用区,如果您没有指定子网,则竞价服务将选择一个可用区及其默认子网,但这可能不是最低价格的可用区。如果您删除了可用区的默认子网,则必须指定其他子网。

非默认 VPC

Amazon EC2 使用指定子网的可用区。

在 VPC 中启动 Spot 实例

如果您想在使用 Spot 实例时利用 EC2-VPC 的功能,请在您的竞价请求中将您的 Spot 实例指定为在 VPC 中启动。按照您为按需实例指定子网的相同方法,为您的 Spot 实例指定子网。

对于在 VPC 中启动 Spot 实例的 Spot 实例请求,其提交过程与在 EC2-Classic 中启动 Spot 实例的 Spot 实例请求相同,但有以下区别:

  • 您应该基于 VPC 中 Spot 实例的现货价格历史记录来确定您的出价。

  • [默认 VPC] 如果希望在特定的低价格可用区中启动您的 Spot 实例,您必须在 Spot 实例请求中指定对应的子网。如果您没有指定子网,则 Amazon EC2 将为您选择一个子网,而该子网的可用区中的现货价格不一定是最低的。

  • [非默认 VPC] 您必须为您的 Spot 实例指定子网。