競價型執行個體 的分配策略 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

競價型執行個體 的分配策略

您的啟動組態會決定 Spot 機群可從中啟動 Spot 執行個體的所有可能 Spot 容量集區 (執行個體類型和可用區域)。但是,啟動執行個體時,Spot 機群會使用您指定的配置策略,從所有可能的集區中挑選特定的集區。

分配策略

您可以為 Spot 執行個體指定下列其中一個配置策略:

priceCapacityOptimized (建議)

Spot 機群會識別擁有啟動中執行個體數目之最高容量可用性的集區。這表示我們將從我們認為在短期內中斷機會最低的集區請求 Spot 執行個體。Spot 機群接著會從這些最低價集區中請求 Spot 執行個體。

priceCapacityOptimized 分配策略是大多數 Spot 工作負載的最佳選擇,例如無狀態容器化應用程式、微服務、Web 應用程式、資料和分析作業以及批次處理。

capacityOptimized

Spot 機群會識別擁有啟動中執行個體數目之最高容量可用性的集區。這表示我們將從我們認為在短期內中斷機會最低的集區請求 Spot 執行個體。您可以使用 capacityOptimizedPrioritized 選擇性地設定機群中每個執行個體類型的優先順序。Spot Fleet 會首先最佳化容量,但會盡力實現執行個體類型的優先順序。

使用 競價型執行個體,定價會依據長期的供需趨勢隨時間慢慢改變,但是容量會即時波動。capacityOptimized 策略會查看即時容量資料並預測哪些資料為最多可用,從而自動將 Spot 執行個體啟動到最可用的集區。這適用於可能具有較高的重新啟動工作中斷成本的工作負載,例如持續整合 (CI)、影像和媒體轉譯、深度學習以及可能具有較高的重新啟動工作中斷成本的高效能運算 (HPC) 工作負載。capacityOptimized 策略可實現盡可能少的中斷,因此可降低您工作負載的整體成本。

或者,您可以使用具有優先順序參數的 capacityOptimizedPrioritized 分配策略,以從最高到最低的優先順序對執行個體類型排序。您可以為不同的執行個體類型設定相同的優先順序。Spot Fleet 會先針對容量進行最佳化,但會盡力遵守執行個體類型的優先順序 (例如,如果遵守優先順序不會顯著影響 Spot Fleet 佈建最佳容量的能力)。對於必須將中斷可能性降至最低的工作負載來說,這是一個很好的選擇,而且某些執行個體類型的偏好也很重要。只有在您的機群使用啟動範本時,才支援使用優先順序。請注意,當您設定 capacityOptimizedPrioritized 的優先順序時,如果隨需執行個體 AllocationStrategy 設定為 prioritized,則相同的優先順序也會套用至您的隨需執行個體。

diversified

競價型執行個體分佈在所有集區中。

lowestPrice

Spot 執行個體來自價格最低且還有可用容量的集區。這是預設策略。不過,建議您透過指定 priceCapacityOptimized 分配策略來覆寫預設。

如果價格最低的集區沒有可用容量,Spot 執行個體來自下一個價格最低且還有可用容量的集區。

如果集區在滿足您的所需容量之前用完容量,Spot 機群將繼續從下一個價格最低的集區中選取集區來滿足您的請求。為確保達到所需的容量,您可能會從數個集區中接收 Spot 執行個體。

由於此策略僅考慮執行個體價格,而不考慮容量可用性,因此可能會導致高中斷率。

InstancePoolsToUseCount

要配置目標 Spot 容量的 Spot 集區數量。僅在配置策略設定為 lowestPrice 時有效。Spot 機群會選取價格最低的 Spot 集區,並將目標 Spot 容量平均配置到您指定數量的 Spot 集區上。

請注意,Spot Fleet 會盡最大努力從您指定的集區數量中提取 Spot 執行個體。如果集區在滿足您的目標容量之前用完 Spot 容量,Spot 機群將透過從下一個價格最低的集區中進行提取來繼續滿足您的請求。為確保達到目標容量,您可能會從超過您指定的集區數量中接收 Spot 執行個體。同樣地,如果大多數集區沒有 Spot 容量,您可能會從少於您指定的集區數量中接收完整目標容量。

選擇適當的分配策略

您可以選擇適當的 Spot 分配策略,進而針對您的使用案例最佳化機群。對於隨需執行個體目標容量,Spot 機群一律會根據公有隨需價格選取最低價的執行個體類型,同時遵循 Spot 執行個體的分配策略 – priceCapacityOptimizedcapacityOptimizeddiversifiedlowestPrice

平衡最低價格與容量可用性

為了平衡價格最低的 Spot 容量集區與具有最高容量可用性的 Spot 容量集區之間的利弊,建議您使用 priceCapacityOptimized 分配策略。此策略會根據集區的價格和這些集區中 Spot 執行個體的容量可用性,決定要從哪些集區請求 Spot 執行個體的集區。這表示我們將從我們認為在短期內中斷機會最低的集區請求 Spot 執行個體,同時我們仍會將價格納入考慮。

如果您的機群執行彈性且無狀態的工作負載,包括容器化應用程式、微服務、Web 應用程式、資料和分析作業以及批次處理,則使用 priceCapacityOptimized 分配策略,以達到最佳的成本節省和容量可用性。

如果您的機群執行的工作負載有較高的重新啟動工作中斷的成本,則您應該實作檢查點作業,以便應用程式可以在中斷時從該點重新啟動。透過使用檢查點作業,您可以讓 priceCapacityOptimized 分配策略非常適合這些工作負載,因為其可以從價格最低的集區中分配容量,而這些集區也會提供較低的 Spot 執行個體中斷率。

如需使用 priceCapacityOptimized 分配策略的範例組態,請參閱 範例 10:使用優先順序在容量最佳化機群中啟動 Spot 執行個體

當工作負載具有較高的中斷成本時

如果您執行的工作負載使用價格相似的執行個體類型,或是中斷成本非常之高,以致於任何成本節省都不足以彌補中斷的邊際增加,則您可以選擇是否使用該 capacityOptimized 策略。該策略可從最可用的 Spot 容量集區分配容量,而這些集區會提供較少中斷的可能性,進而降低您工作負載的整體成本。如需使用 capacityOptimized 分配策略的範例組態,請參閱 範例 8:設定容量重新平衡以啟動替代 競價型執行個體

當必須將中斷可能性降至最低,而且對於某些執行個體類型的偏好也很重要時,您可以使用 capacityOptimizedPrioritized 分配策略,然後設定執行個體類型的順序,來表現您的集區優先順序,以從最高到最低優先順序使用。如需範例組態,請參閱 範例 9:在容量最佳化機群中啟動 Spot 執行個體

請注意,只有在您的機群使用啟動範本時,才支援使用優先順序。另請注意,當您設定 capacityOptimizedPrioritized 的優先順序時,如果隨需執行個體 AllocationStrategy 設定為 prioritized,則相同的優先順序也會套用至您的隨需執行個體。

當您的工作負載具有時間彈性且容量可用性並非相關因素時

如果您的機群很小或執行時間很短,您仍可在考慮容量可用性的同時,使用 priceCapacityOptimized 來實現成本節省最大化。

如果您的工作負載具有時間彈性,而且容量可用性並非相關因素,則您可以選擇是否使用 lowestPrice 分配策略來實現成本節省最大化。不過請注意,由於 lowestPrice 分配策略僅考慮執行個體價格,而不考慮容量可用性,因此可能會導致較高的 Spot 執行個體中斷率。

當您的機群很龐大或執行時間較長時

如果您的機群很龐大或執行時間較長,則可以使用 diversified 策略,透過將多個 競價型執行個體分散到多個集區中來提高機群的可用性。例如,如果 Spot 機群指定了 10 個集區和 100 個執行個體的目標容量,則該機群會在每個集區中啟動 10 個 Spot 執行個體。如果某個集區的 Spot 價格超過該集區的最高價格,則只有 10% 的機群會受到影響。隨著時間,使用這種策略也會使您的機群對任何一個集區 Spot 價格上漲較不敏感。使用 diversified 策略,Spot Fleet 不會將 Spot 執行個體啟動至任何等於或高於隨需價格的 Spot 價格集區中。

若要建立低成本且多樣化的機群,請使用 lowestPrice 策略搭配 InstancePoolsToUseCount。例如,如果您的目標容量為 10 個 Spot 執行個體,並且您指定 2 個 Spot 容量集區 (對於 InstancePoolsToUseCount),Spot 機群將利用兩個價格最低的集區來滿足您的 Spot 容量。

您可以使用少量或大量的 Spot 容量集區來配置 競價型執行個體。例如,若您執行批次處理,我們建議您指定少量 Spot 容量集區 (例如,InstancePoolsToUseCount=2),以確保您的佇列始終具有運算容量,同時盡可能地節省費用。若您執行 Web 服務,我們建議您指定大量 Spot 容量集區 (例如,InstancePoolsToUseCount=10),在 Spot 容量集區暫時無法使用時盡可能減輕影響。

請注意,Spot Fleet 會盡最大努力從您指定的集區數量中提取 Spot 執行個體。如果集區在滿足您的目標容量之前用完 Spot 容量,Spot 機群將透過從下一個價格最低的集區中進行提取來繼續滿足您的請求。為確保達到目標容量,您可能會從超過您指定的集區數量中接收 Spot 執行個體。同樣地,如果大多數集區沒有 Spot 容量,您可能會從少於您指定的集區數量中接收完整目標容量。

維護目標容量

在 Spot 執行個體因 Spot 價格或 Spot 容量集區可用容量的變更而終止之後,類型為 maintain 的 Spot Fleet 會啟動替代 Spot 執行個體。分配策略會確定從中啟動替代執行個體的集區,如下所示:

  • 如果分配策略是 priceCapacityOptimized,則機群會在擁有最多 Spot 執行個體容量可用性的集區中啟動替代執行個體,同時將價格納入考慮並識別價格最低且具有高容量可用性的執行個體。

  • 如果分配策略為 capacityOptimized,則機群會在擁有最多 Spot 執行個體容量可用性的集區中啟動替代執行個體。

  • 如果分配策略為 diversified,則機群會將替代 競價型執行個體 分配到剩餘的集區中。

  • 如果分配策略為 lowestPrice,則機群會在 Spot 價格為目前為最低的集區中啟動替代執行個體。

  • 若分配策略為 lowestPrice 搭配 InstancePoolsToUseCount,則機群會選取價格最低的 Spot 容量集區,並在您指定數量的 Spot 容量集區上啟動 競價型執行個體。