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

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

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

您可以指定下列其中一個配置策略:

lowestPrice

Spot 執行個體來自價格最低且還有可用容量的集區。這是預設策略。

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

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

diversified

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

capacityOptimized

競價型執行個體 來自擁有適合啟動中執行個體數目之最佳容量的集區。您可以使用 capacityOptimizedPrioritized 選擇性地設定機群中每個執行個體類型的優先順序。Spot Fleet 會首先最佳化容量,但會盡力實現執行個體類型的優先順序。

使用 競價型執行個體,定價會依據長期的供需趨勢隨時間慢慢改變,但是容量會即時波動。capacityOptimized 策略會查看即時容量資料並預測哪些資料為最多可用,從而自動將 Spot 執行個體啟動到最可用的集區。這非常適用於大數據和分析、影像和媒體轉譯、機器學習和高效能運算等,對於重新啟動工作和檢查點作業中斷成本較高的工作負載。capacityOptimized 策略可實現盡可能少的中斷,因此可降低您工作負載的整體成本。

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

InstancePoolsToUseCount

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

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

維護目標容量

在 Spot 執行個體因 Spot 價格或 Spot 容量集區可用容量的變更而終止之後,類型為 maintain 的 Spot Fleet 會啟動替代 Spot 執行個體。如果分配策略為 lowestPrice,則機群會在 Spot 價格為目前為最低的集區中啟動替代執行個體。如果分配策略為 diversified,則機群會將替代 競價型執行個體 分配到剩餘的集區中。若分配策略為 lowestPrice 搭配 InstancePoolsToUseCount,則機群會選取價格最低的 Spot 集區,並在您指定數量的 Spot 集區上啟動 競價型執行個體。

選擇適當的分配策略

您可以根據使用案例來將 Spot Fleets最佳化。

如果您的機群執行的工作負載有較高的重新啟動工作和檢查點作業中斷的成本,請使用 capacityOptimized 策略。透過提供較少中斷的可能性,該策略可降低您工作負載的整體成本。此為建議策略。對於必須將中斷可能性降至最低的工作負載,使用 capacityOptimizedPrioritized 策略,而且某些執行個體類型的偏好也很重要。

如果您的機群很小或執行時間很短,即使所有執行個體位於單一 Spot 容量集區中,競價型執行個體 中斷的概率也會很低。因此,lowestPrice 策略可能滿足您的需求,同時提供最低的成本。

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

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

針對成本最佳化設定 Spot Fleet

若要最佳化 Spot 執行個體的使用成本,請指定 lowestPrice 分配策略,以便 Spot Fleet 根據目前 Spot 價格自動部署執行個體類型和可用區域的最低價組合。

對於隨需執行個體目標容量,Spot Fleet 一律會根據公有隨需價格選取最低價的執行個體類型,同時繼續遵循 Spot 執行個體的分配策略 (lowestPricecapacityOptimizeddiversified)。

針對成本最佳化和多樣化設定 Spot Fleet

若要建立實惠且多樣化的 Spot 執行個體機群,請使用 lowestPrice 分配策略搭配 InstancePoolsToUseCount。Spot Fleet 會根據您指定數量 Spot 集區上的目前 Spot 價格,自動部署執行個體類型和可用區域的最低價組合。此組合可以用來避免最昂貴的 競價型執行個體。

例如,如果您的目標容量為 10 個 Spot 執行個體,並且您指定 2 個 Spot 容量集區 (對於 InstancePoolsToUseCount),Spot Fleet 將利用兩個最便宜的集區來滿足您的 Spot 容量。

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

針對容量最佳化設定 Spot Fleet

若要將 Spot 執行個體啟動到最可用的 Spot 容量集區中,請使用 capacityOptimized 分配策略。如需範例組態,請參閱 範例 9:在容量最佳化機群中啟動 Spot 執行個體

或者,您可以使用 capacityOptimizedPrioritized 分配策略,然後設定執行個體類型的順序,來表現您的集區優先順序,以從最高到最低優先順序使用。只有在您的機群使用啟動範本時,才支援使用優先順序。請注意,當您設定 capacityOptimizedPrioritized 的優先順序時,如果 OnDemandAllocationStrategy 設定為 prioritized,則相同的優先順序也會套用至您的隨需執行個體。如需範例組態,請參閱 範例 10:使用優先順序在容量最佳化機群中啟動 Spot 執行個體