容量再平衡
您可以配置竞价型实例集以在 Amazon EC2 发出再平衡建议以通知您竞价型实例处于较高的中断风险时启动替换竞价型实例。容量再平衡功能可在运行中的实例被 Amazon EC2 中断之前,主动使用新竞价型实例扩展您的队列,从而帮助您维护工作负载的可用性。有关更多信息,请参阅EC2 实例再平衡建议。
要配置竞价型实例集以启动替换竞价型实例,您可以使用 Amazon EC2 控制台或 AWS CLI。
-
Amazon EC2 控制台:您必须在创建 Spot 队列时选中 Capacity rebalance (容量再平衡) 复选框。有关更多信息,请参阅使用已定义的参数创建 Spot 队列请求(控制台)中的步骤 6.d.。
-
AWS CLI:使用 request-spot-fleet 命令和
SpotMaintenanceStrategies
结构中的相关参数。有关更多信息,请参阅示例启动配置。
限制
-
容量再平衡仅适用于类型为
maintain
的机群。 -
队列运行时,您无法修改容量再平衡设置。要更改容量再平衡设置,您必须删除此队列并创建新队列。
配置选项
竞价型实例集的 ReplacementStrategy
支持以下两个值:
launch-before-terminate
-
竞价型实例集会在新的替换竞价型实例启动后终止接收再平衡通知的竞价型实例。如果指定
launch-before-terminate
,还必须为termination-delay
指定值。启动新的替换实例后,竞价型实例集将等待termination-delay
指定的持续时间,然后终止旧实例。对于termination-delay
,最短为 120 秒(2 分钟),最长为 7200 秒(2 小时)。建议仅当您可以预测实例关闭过程完成所需的时长时才使用
launch-before-terminate
。这将确保只有在关闭过程完成后才终止旧实例。请注意,Amazon EC2 可能会在termination-delay
之前中断旧实例,并发出两分钟警告。我们强烈建议不要将
lowestPrice
分配策略与launch-before-terminate
结合使用,以避免替换竞价型实例也处于中断风险升高的状态。 launch
-
当针对现有竞价型实例发出再平衡通知时,竞价型实例集将启动替换竞价型实例。竞价型实例集不会终止接收再平衡通知的实例。您可以终止旧实例,也可以使其保持运行状态。在实例运行期间,您需要为它们付费。
注意事项
如果为容量再平衡配置 Spot 队列,请考虑以下事项:
- 竞价型实例集可以启动新替换竞价型实例,直到已执行容量达到目标容量的两倍
-
为容量再平衡配置竞价型实例集时,队列会尝试为接收再平衡建议的每个竞价型实例启动新的替换竞价型实例。在竞价型实例收到再平衡建议后,它不再统计为已执行容量的一部分。根据替换策略,竞价型实例集在预配置的终止延迟后终止实例,或使其保持运行状态。这使您有机会对实例执行再平衡操作。
如果您的队列达到目标容量的两倍,即使替换实例本身收到再平衡建议,它也会停止启动新的替换实例。
例如,您创建的竞价型实例集目标容量为 100 个竞价型实例。所有竞价型实例都会收到再平衡建议,这将导致竞价型实例集启动 100 个替换竞价型实例。这使已执行的竞价型实例的数量增加到 200 个,是目标容量的两倍。一些替换实例会收到再平衡建议,但由于队列不能超过目标容量的两倍,因此不会再启动更多替换实例。
请注意,在实例运行期间,您需要为所有实例付费。
- 我们建议您将竞价型实例集配置为终止接收再平衡建议的竞价型实例
-
如果您将竞价型实例集配置为实现容量再平衡,我们建议仅当您可以预测实例关闭过程完成所需的时长时才选择
launch-before-terminate
和适当的终止延迟。这将确保只有在关闭过程完成后才终止旧实例。如果您选择自行终止建议再平衡的实例,我们建议您监控机群中的竞价型实例接收的再平衡建议信号。通过监控信号,您可以在 Amazon EC2 中断受影响的实例之前快速对其执行再平衡操作,然后您可以手动终止它们。如果您不终止实例,则需要在实例运行期间继续为其付费。Spot 队列不会自动终止接收再平衡建议的实例。
您可以使用 Amazon EventBridge 或实例元数据设置通知。有关更多信息,请参阅监控再平衡建议信号。
- 在计算横向缩减或扩展期间的已执行容量时,竞价型实例集不计入收到再平衡建议的实例
-
如果您的 Spot 队列针对容量再平衡进行了配置,并且您将目标容量更改为向内或向外扩展,则队列不会将标记为再平衡的实例计算为已执行容量的一部分,如下所示:
-
向内扩展 – 如果您降低所需的目标容量,队列将终止未标记为再平衡的实例,直到达到所需容量。标记为再平衡的实例不计入已执行容量。
例如,您创建的竞价型实例集目标容量为 100 个竞价型实例。10 个实例会收到再平衡建议,因此队列启动 10 个新的替换实例,从而获得 110 个实例的执行容量。然后,您将目标容量减少到 50(缩减),但已执行的容量实际上为 60 个实例,因为队列不会终止标记为再平衡的 10 个实例。您需要手动终止这些实例,也可以让它们保持运行状态。
-
向外扩展 – 如果您升高所需的目标容量,队列将启动新实例,直到达到所需容量。标记为再平衡的实例不计入已执行容量。
例如,您创建的竞价型实例集目标容量为 100 个竞价型实例。10 个实例会收到再平衡建议,因此队列启动 10 个新的替换实例,从而获得 110 个实例的执行容量。然后,您将目标容量增加到 200(扩展),但已执行的容量实际上为 210 个实例,因为标记为再平衡的 10 个实例不被队列计入目标容量的一部分。您需要手动终止这些实例,也可以让它们保持运行状态。
-
- 在请求中提供尽可能多的 Spot 容量池
-
将您的 Spot 队列配置为使用多种实例类型和多个可用区。这提供了在各种 Spot 容量池中启动竞价型实例的灵活性。有关更多信息,请参阅灵活地选择实例类型和可用区。
- 避免替换竞价型实例中断的风险升高
-
如果您使用
lowest-price
分配策略,替换竞价型实例可能会面临中断升高的风险。这是因为,即使替换竞价型实例可能在启动后不久中断,Amazon EC2 始终会在当时具有可用容量的价格最低池中启动实例。为避免中断风险升高,我们强烈建议不要使用lowest-price
分配策略,而建议使用capacity-optimized
或capacity-optimized-prioritized
分配策略。这些策略确保替换竞价型实例在最佳的竞价型容量池中启动,因此在不久的将来不太可能被中断。有关更多信息,请参阅使用容量优化的分配策略。