竞价型实例分配策略 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

竞价型实例分配策略

竞价型实例集中竞价型实例的分配策略决定了如何根据启动说明从可能的 Spot 容量池满足竞价型实例集请求。以下是您在 Spot 队列请求中可以指定的分配策略:

lowestPrice

竞价型实例来自价格最低的池。这是默认策略。

diversified

竞价型实例分布在所有池中。

capacityOptimized

竞价型实例 来自为启动的实例数量提供最佳容量的池。您可以选择使用 capacityOptimizedPrioritized 为队列中的每种实例类型设置优先级。Spot 队列首先会针对容量进行优化,但会尽最大努力遵循实例类型的优先级。

使用竞价型实例,定价会根据长期供需趋势缓慢发生变化,但容量会实时波动。capacityOptimized 策略通过查看实时容量数据并预测可用性最高的池,自动在可用性最高的池中启动 Spot 实例。这适用于与中断相关的重启工作和检查点成本较高的工作负载,例如大数据和分析、图像和媒体渲染、机器学习以及高性能计算。通过实现更低的中断可能性,capacityOptimized 策略可以降低您工作负载的整体成本。

或者,您也可以使用 capacityOptimizedPrioritized 分配策略,该策略带有优先级参数,以便从最高到最低优先级对实例类型进行排序。您可以为不同的实例类型设置相同的优先级。Spot 队列首先会针对容量进行优化,但会尽最大努力遵循实例类型的优先级(例如,如果遵循优先级不会显著影响 Spot 队列预置最佳容量的能力)。对于必须最大限度地减少中断可能性,同时对某些实例类型的偏好也很重要的工作负载来说,这是一个不错的选择。仅当您的队列使用启动模板时,才支持使用优先级。请注意,当您为 capacityOptimizedPrioritized 设置优先级时,如果按需 AllocationStrategy 设置为 prioritized,那么相同的优先级也会应用于您的按需型实例。

InstancePoolsToUseCount

竞价型实例分布在您指定数量的 Spot 池中。此参数仅在与 lowestPrice 结合使用时有效。

维持目标容量

在竞价型实例因 Spot 价格或 Spot 容量池的可用容量发生变化而终止之后,maintain 类型的竞价型实例集会启动替换竞价型实例。如果分配策略是 lowestPrice,则 队列在当前具有最低 Spot 价格的池中启动替换实例。如果分配策略是 diversified,则队列在其余池间分配替换 Spot 实例。如果分配策略是 lowestPriceInstancePoolsToUseCount 的组合,则队列选择具有最低价格的 Spot 池并跨您指定数量的 Spot 池启动 Spot 实例。

选择合适的分配策略

您可以基于自己的使用案例来优化 Spot 队列。

如果您的队列运行的工作负载可能会因重启工作和检查点而导致更高的中断成本,则使用 capacityOptimized 策略。此策略提供更低的中断可能性,这可以降低您工作负载的整体成本。推荐您使用此策略。对于必须最大限度地减少中断可能性,同时对某些实例类型的偏好也很重要的工作负载来说,请使用 capacityOptimizedPrioritized 策略。

如果队列较小或运行较短时间,则竞价型实例中断的可能性较小,即使所有实例位于单个 Spot 容量池中。因此,lowestPrice 策略可能会满足您的需求,同时提供最低的成本。

如果队列较大或长时间运行,则可以通过在多个池间分配竞价型实例来提高队列的可用性。例如,如果竞价型实例集请求指定 10 个池,目标容量为 100 个实例,则队列会在每个池中启动 10 个竞价型实例。如果某个池的 Spot 价格超过您在该池中的最高价,您的队列仅 10% 受到影响。使用此策略还可降低您的队列对单个池的 Spot 价格随时间上涨的敏感度。使用 diversified 策略时,Spot 队列不在 Spot 价格等于或高于按需价格的任何池中启动 Spot 实例。

要创建低成本且多元化的队列,请将 lowestPrice 策略与 InstancePoolsToUseCount 结合使用。您可以使用少量或大量的 Spot 池以在其中分配您的竞价型实例。例如,如果您运行批处理,我们建议指定少量的 Spot 池(例如,InstancePoolsToUseCount=2)以确保队列始终具有计算容量,同时尽可能节省成本。如果您运行 Web 服务,我们建议您指定大量 Spot 容量池(例如,InstancePoolsToUseCount=10)以尽可能减少某个 Spot 容量池临时不可用造成的影响。

配置 Spot 队列以实现成本优化

要优化竞价型实例的使用成本,请指定 lowestPrice 分配策略,以便竞价型实例集自动基于当前 Spot 价格部署实例类型和可用区的最低成本组合。

对于按需型实例目标容量,竞价型实例集始终根据公开按需价格选择成本最低的实例类型,同时对竞价型实例继续按照策略(lowestPricecapacityOptimizeddiversified)执行分配。

配置 Spot 队列以实现成本优化和多元化

要创建低成本且多元化的竞价型实例实例集,请将 lowestPrice 分配策略与 InstancePoolsToUseCount 结合使用。Spot 队列基于所指定数量的 Spot 池中的当前 Spot 价格,自动部署实例类型和可用区的最低成本组合。此组合可用于避免最昂贵的竞价型实例。

例如,如果您的目标容量是 10 个竞价型实例,并且您(为 InstancePoolsToUseCount)指定了 2 个 Spot 容量池,竞价型实例集将使用两个价格最低的池来满足 Spot 容量。

请注意,竞价型实例集会尽力尝试根据您指定的池数量提取竞价型实例。如果池在满足目标容量之前耗尽 Spot 容量,Spot 队列将继续通过从下一个最便宜的池中提取来满足您的请求。为确保达到目标容量,您可能会从超过指定数量的池接收竞价型实例。同样,如果大多数池没有 Spot 容量,则您可能会从少于指定数量的池接收完整目标容量。

配置 Spot 队列以实现容量优化

要在可用性最高的 Spot 容量池中启动竞价型实例,请使用 capacityOptimized 分配策略。有关示例配置,请参阅 示例 9:在容量优化的队列中启动竞价型实例

您还可以通过使用 capacityOptimizedPrioritized 分配策略来表达您的池优先级,然后将要使用的实例类型的顺序设置为从最高到最低优先级。仅当您的队列使用启动模板时,才支持使用优先级。请注意,当您为 capacityOptimizedPrioritized 设置优先级时,如果 OnDemandAllocationStrategy 设置为 prioritized,那么相同的优先级也会应用于您的按需型实例。有关示例配置,请参阅 示例 10:在具有优先级的容量优化队列中启动竞价型实例