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

竞价型实例的分配策略

您的启动配置决定了竞价型实例集可以从中启动竞价型实例的所有可能竞价型容量池(实例类型和可用区)。但在启动实例时,竞价型实例集将使用您指定的分配策略从所有可能的池中选择特定的池。

注意

(仅限 Linux 实例)如果将竞价型实例配置为启动并开启 AMD SEV-SNP,则您需要按小时支付额外的使用费,费率为所选实例类型按需小时费率的 10%。如果分配策略使用价格作为输入,则 EC2 实例集不包括这笔额外费用;只使用 Spot 价格。

分配策略

您可以为您的竞价型实例指定以下分配策略之一:

priceCapacityOptimized(推荐)

竞价型实例集为正在启动的实例数识别具有最高可用容量的池。这意味着我们将从我们认为短期内中断概率最低的池中请求竞价型实例。然后,竞价型实例集从这些池中价格最低的请求竞价型实例。

priceCapacityOptimized 分配策略是大多数 Spot 工作负载的最佳选择,例如无状态容器化应用程序、微服务、Web 应用程序、数据和分析任务以及批处理。

capacityOptimized

竞价型实例集为正在启动的实例数识别具有最高可用容量的池。这意味着我们将从我们认为短期内中断概率最低的池中请求竞价型实例。您可以选择使用 capacityOptimizedPrioritized 为队列中的每种实例类型设置优先级。Spot 队列首先会针对容量进行优化,但会尽最大努力遵循实例类型的优先级。

使用竞价型实例,定价会根据长期供需趋势缓慢发生变化,但容量会实时波动。capacityOptimized 策略通过查看实时容量数据并预测可用性最高的池,自动在可用性最高的池中启动 Spot 实例。这适用于因重启工作而导致中断成本更高的工作负载,例如长时间持续集成(CI)、图像和媒体渲染、深度学习以及高性能计算(HPC)工作负载,这些工作负载可能具有与重启工作相关的更高的中断成本。通过实现更低的中断可能性,capacityOptimized 策略可以降低您工作负载的整体成本。

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

diversified

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

选择合适的分配策略

您可以选择适当的 Spot 分配策略,从而根据您的使用案例来优化实例集。对于按需型实例目标容量,竞价型实例集始终根据公开按需型价格选择价格最低的实例类型,同时对竞价型实例按照分配策略(priceCapacityOptimizedcapacityOptimizeddiversified)执行分配。

平衡最低价格和可用容量

为了获得价格最低价格 Spot 容量池与具有最高可用容量的 Spot 容量池之间的平衡,我们建议您使用 priceCapacityOptimized 分配策略。该策略根据池的价格以及这些池中竞价型实例的可用容量来决定向哪些池请求竞价型实例。这意味着将从我们认为短期内中断概率最低的池中请求竞价型实例,同时还要考虑价格。

如果您的实例集运行弹性和无状态的工作负载(包括容器化应用程序、微服务、Web 应用程序、数据和分析作业以及批量处理),则使用 priceCapacityOptimized 分配策略以实现最大的成本节约和可用容量。

如果实例集运行的工作负载可能会因重启工作而导致更高的中断成本,则应设置检查点,以便应用程序中断时可从该点重启。通过使用检查点,可以使 priceCapacityOptimized 分配策略变得非常适合这些工作负载,因其会从价格最低的池中分配容量,这些池同时还具有较低的竞价型实例中断率。

有关使用 priceCapacityOptimized 分配策略的示例配置,请参阅 示例 9:在具有优先级的容量优化队列中启动竞价型实例

当工作负载拥有较高中断成本时

如果您运行的工作负载使用价格相似的实例类型,或中断成本非常高,以至于任何成本节约都不足以负担一个轻微中断,则可以选择使用 capacityOptimized 策略。此策略从可用容量最多的 Spot 容量池分配容量,这些容量池中断的可能性更低,从而可降低您工作负载的整体成本。有关使用 capacityOptimized 分配策略的示例配置,请参阅 示例 7:配置容量再平衡以启动替换竞价型实例

如果必须将中断的可能性降至最低,但某些实例类型的首选项又很紧要时,则您可以通过使用 capacityOptimizedPrioritized 分配策略来表达您的池优先级,然后将要使用的实例类型的顺序设置为从最高到最低优先级。有关示例配置,请参阅 示例 8:在容量优化的队列中启动竞价型实例

请注意,仅当您的实例集使用启动模板时,才支持使用优先级。还需注意,为 capacityOptimizedPrioritized 设置优先级时,如果按需 AllocationStrategy 设置为 prioritized,那么相同的优先级也会应用于您的按需型实例。

当您的工作负载时间灵活且可用容量不是一个因素时

如果您的实例集较小或运行时间较短,则可以使用 priceCapacityOptimized 来最大限度地节省成本,同时还要考虑可用容量。

当您的实例集较大或运行时间较长时

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

维持目标容量

在竞价型实例因 Spot 价格或 Spot 容量池的可用容量发生变化而终止之后,maintain 类型的竞价型实例集会启动替换竞价型实例。分配策略确定从哪个池启动替换实例,如下所示:

  • 如果分配策略是 priceCapacityOptimized,则实例集在具有最多竞价型实例容量的池中启动替换实例,同时还要考虑价格并确定价格最低且具有高可用容量的池。

  • 如果分配策略是 capacityOptimized,则实例集在当前具有最多竞价型实例可用容量的池中启动替换实例。

  • 如果分配策略是 diversified,则队列在其余池间分配替换 Spot 实例。