使用叢集和 S EC2 pot 叢集中的容量重新平衡來取代有風險的 Spot 執行個體 - Amazon Elastic Compute Cloud

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

使用叢集和 S EC2 pot 叢集中的容量重新平衡來取代有風險的 Spot 執行個體

透過容量重新平衡,您的EC2叢集或 Spot 叢集可以透過主動更換存在中斷風險的 Spot 執行個體來維持所需的 Spot 容量。當 Spot 執行個體面臨中斷風險較高時,Amazon EC2 會傳送重新平衡建議。如果啟用了容量重新平衡,則重新平衡建議會在有風險的執行個體中斷之前觸發新的 Spot 執行個體的啟動。

容量重新平衡可協助您維持工作負載的可用性,方法是在 Amazon 中斷執行個體之前,使用新的 Spot 執行個體主動擴充叢集。EC2

將EC2叢集設定為使用容量重新平衡來啟動替代 Spot 執行個體

使用創建艦隊(AWS CLI)命令和結構中的相關參數。MaintenanceStrategies如需組JSON態範例,請參閱範例 7:設定容量重新平衡以啟動替代 Spot 執行個體

將 Spot 叢集設定為使用容量重新平衡來啟動替代 Spot 執行個體

您可以使用 Amazon EC2 主控台或設定 AWS CLI 容量重新平衡。

(主控台) 建立 Spot 叢集時,請選取 [容量重新平衡] 核取方塊。如需詳細資訊,請參閱 使用已定義的參數建立 Spot Fleet 請求 (主控台) 中的步驟 6.d.。

(AWS CLI)使用命request-spot-fleet令和結SpotMaintenanceStrategies構中的相關參數。如需組JSON態範例,請參閱範例 8:設定容量重新平衡以啟動替代 競價型執行個體

限制

  • 容量重新平衡僅適用於類型為 maintain 的機群。

  • 機群執行時,您無法修改容量重新平衡設定。若要變更容量重新平衡設定,您必須刪除機群並建立新的機群。

組態選項

F ReplacementStrategy or EC2 叢集和競價型叢集支援下列兩個值:

launch-before-terminate

Amazon EC2 終止在新的替代 Spot 執行個體啟動後收到重新平衡通知的競價型執行個體。當指定 launch-before-terminate 時,您亦須指定 termination-delay 的值。新的替代執行個體啟動後,Amazon 會EC2等待的持續時間termination-delay,然後終止舊執行個體。對於 termination-delay,下限為 120 秒 (2 分鐘),上限則為 7200 秒 (2 小時)。

建議僅在您可以預測執行個體關閉程序將需要多長時間才能完成時,才使用 launch-before-terminate。這將確保只在關機程序完成之後,才會終止舊執行個體。請注意,Amazon EC2 可以在發出前兩分鐘警告中斷舊執行個體termination-delay

我們強烈建議您不launch-before-terminate要將 lowest-price (EC2叢集) 或 lowestPrice (Spot Fleet) 配置策略與結合使用,以避免更換 Spot 執行個體也會增加中斷風險。

launch

當現有競價型執行個體發出重新平衡通知時,Amazon 會EC2啟動替換 Spot 執行個體。Amazon EC2 不會終止收到重新平衡通知的執行個體。您可以終止舊的執行個體,也可以讓它們保持執行中狀態。所有執行個體在執行時,您需要支付所有執行個體的費用。

考量事項

如果您設定EC2叢集或 Spot 叢集以進行容量重新平衡,請考慮下列事項:

盡可能在請求中提供更多 Spot 容量集區

將您的叢集設定為使用多個執行個體類型和可用區域。這提供了在各種 Spot 容量集區中啟動 Spot 執行個體的彈性。如需詳細資訊,請參閱 對執行個體類型和可用區域具有彈性

避免中斷替代 Spot 執行個體的風險提高

為了避免中斷的風險增加,我們建議使用capacity-optimizedcapacity-optimized-prioritized配置策略。這些策略可確保在最佳 Spot 容量集區中啟動替代 Spot 執行個體,因此不太可能在不久的將來中斷。如需詳細資訊,請參閱使用價格和容量最佳化分配策略

如果您使用lowest-price配置策略,替換的 Spot 執行個體可能會增加中斷的風險。這是因為 Amazon 始終EC2會在當時具有可用容量的最低價集區中啟動執行個體,即使您的替換 Spot 執行個體在啟動後很快就會中斷。

Amazon 只EC2會在可用性相同或更好的情況下啟動新執行個體

容量重新平衡的其中一個目標是改善 Spot 執行個體的可用性。如果現有競價型執行個體收到重新平衡建議,Amazon 只EC2會在新執行個體提供與現有執行個體相同或更好的可用性時啟動新執行個體。如果新執行個體的中斷風險比現有執行個體更糟,Amazon 將不EC2會啟動新執行個體。但是,Amazon EC2 將繼續評估 Spot 容量集區,並在可用性改善時啟動新執行個體。

如果 Amazon EC2 主動啟動新執行個體,您的現有執行個體有可能會中斷。發生這種情況時,Amazon EC2 將嘗試啟動新執行個體,無論新執行個體是否有高中斷風險。

容量重新平衡不會增加 Spot 執行個體中斷率

啟用容量重新平衡時,不會增加 Spot 執行個體中斷率 (Amazon EC2 需要返回容量時回收的 Spot 執行個體數量)。但是,如果容量重新平衡偵測到執行個體有中斷的風險,Amazon EC2 將立即嘗試啟動新的執行個體。結果是,與在風險執行個體中斷後等待 Amazon 啟動新執行個體EC2的情況下,可能會取代更多的執行個體。

雖然您可以在啟用容量重新平衡的情況下取代更多執行個體,但您可以從主動式而非被動式中受益,因為在執行個體中斷之前您有更多時間採取動作。透過 Spot 執行個體中斷通知,您通常最多只有兩分鐘時間來正常關閉您的執行個體。透過容量重新平衡預先啟動新的執行個體,可讓現有程序更有可能在有風險的執行個體上完成,您可以啟動執行個體關閉程序,並防止在有風險的執行個體上排程新的工作。您也可以開始準備新啟動的執行個體以接管應用程式。透過容量重新平衡的主動式取代,您可以從正常連續性中獲益。

作為示範使用容量重新平衡的風險和益處的理論範例,請考慮下列案例:

  • 下午 2:00 — 收到執行個體 A 的重新平衡建議,Amazon 會EC2立即開始嘗試啟動替換執行個體 B,讓您有時間開始關機程序。 *

  • 下午 2:30 – 收到執行個體 B 的重新平衡建議,會取代為執行個體 C,讓您有時間開始關機程序。*

  • 下午 2:32 – 如果未啟用容量重新平衡,並且如果在下午 2:32 收到執行個體 A 的 Spot 執行個體中斷通知,則您最多只有兩分鐘時間採取動作,但是執行個體 A 會一直執行到目前。

* 如果指launch-before-terminate定,Amazon EC2 將在替換執行個體上線後終止有風險的執行個體。

Amazon EC2 可以啟動新的替代 Spot 執行個體,直到完成的容量達到目標容量

將叢集設定為容量重新平衡時,叢集會嘗試為每個接收重新平衡建議的 Spot 執行個體啟動新的替代 Spot 執行個體。Spot 執行個體收到重新平衡建議後,該執行個體不再計入以滿足容量的一部分。根據替換策略,Amazon EC2 會在預先設定的終止延遲後終止執行個體,或讓執行個體保持執行。這讓您有機會在執行個體上執行重新平衡動作

如果您的機群達到目標容量的兩倍,即使替代執行個體本身收到重新平衡建議,它仍會停止啟動新的替代執行個體。

例如,您建立的叢集目標容量為 100 個 Spot 執行個體。所有 Spot 執行個體都會收到重新平衡建議,這會導致 Amazon 啟動 100 EC2 個替代 Spot 執行個體。這會將已滿足 Spot 執行個體的數目提高至 200 個,這是目標容量的兩倍。部分取代執行個體會收到重新平衡建議,但不會再啟動取代執行個體,因為叢集不能超過其目標容量的兩倍。

請注意,所有執行個體在執行時都需支付這些執行個體的費用。

建議您將叢集設定為終止接收重新平衡建議的 Spot 執行個體

如果您設定叢集進行容量重新平衡,建議您只launch-before-terminate有在能夠預測執行個體關閉程序需要多長時間才能完成時,才選擇適當的終止延遲。這將確保只在關機程序完成之後,才會終止舊執行個體。

如果您選擇自行終止建議用於重新平衡的執行個體,建議您監控機群中 Spot 執行個體收到的重新平衡建議訊號。透過監控訊號,您可以在 Amazon EC2 中斷受影響的執行個體之前,快速對受影響的執行個體執行重新平衡動作,然後手動終止它們。如果您未終止執行個體,則會在執行時繼續為這些執行個體付費。Amazon EC2 不會自動終止接收重新平衡建議的執行個體。

您可以使用 Amazon EventBridge 或執行個體中繼資料設定通知。如需詳細資訊,請參閱監控重新平衡建議訊號

在擴展或擴展期間計算已滿足容量時,叢集不會計算接收重新平衡建議的執行個體

如果您的叢集設定為「容量重新平衡」,且您將目標容量變更為擴充或向外擴充,則叢集不會將標示為重新平衡作為已履行容量一部分的執行個體計算,如下所示:

  • 擴充 — 如果您減少所需的目標容量,Amazon EC2 會終止未標示為重新平衡的執行個體,直到達到所需的容量為止。標示要重新平衡的執行個體不會計入已滿足的容量。

    例如,您建立一個目標容量為 100 個 Spot 執行個體的叢集。10 個執行個體會收到重新平衡建議,因此 Amazon EC2 啟動 10 個新的替換執行個體,產生 110 個執行個體的可滿足容量。然後您將目標容量減少到 50 (擴充),但已滿足的容量實際上是 60 個執行個體,因為 Amazon EC2 不會終止標記為重新平衡的 10 個執行個體。您需要手動終止這些執行個體,或者您也可以讓它們保持運行。

  • 向外擴充 — 如果您增加所需的目標容量,Amazon 會EC2啟動新執行個體,直到達到所需的容量為止。標示要重新平衡的執行個體不會計入已滿足的容量。

    例如,您建立的叢集目標容量為 100 個 Spot 執行個體。10 個執行個體會收到重新平衡建議,因此叢集會啟動 10 個新的替代執行個體,產生 110 個執行個體的滿足容量。然後,您將目標容量增加至 200 (擴展),但已滿足容量實際上是 210 個執行個體,因為標示要重新平衡的 10 個執行個體不會被機群計為目標容量的一部分。您需要手動終止這些執行個體,或者您也可以讓它們保持運行。