容量重新平衡 - Amazon Elastic Compute Cloud

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

容量重新平衡

您可以設定 Spot Fleet,以便在 Amazon EC2 發出重新平衡建議時啟動替代 Spot 執行個體,以通知您 Spot 執行個體的中斷風險提高。容量重新平衡可協助您維持工作負載可用性,方法是在執行中的執行個體受到 Amazon EC2 的中斷之前,使用新的 Spot 執行個體主動擴增機群。如需詳細資訊,請參閱 EC2 執行個體重新平衡建議

要設定 Spot Fleet 以啟動替代 Spot 執行個體,您可以使用 Amazon EC2 主控台或 AWS CLI。

限制

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

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

組態選項

Spot Fleet 的 ReplacementStrategy 支援以下兩個值:

launch-before-terminate

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

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

launch

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

考量事項

如果您設定容量重新平衡的 Spot Fleet,請考慮下列事項:

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

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

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

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

只有在可用性相同或更好時,Amazon EC2 才會啟動新執行個體

容量重新平衡的其中一個目標是改善 Spot 執行個體的可用性。如果現有的 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 機群為容量重新平衡時,Amazon EC2 會嘗試為每個收到重新平衡建議的 Spot 執行個體啟動新的替代 Spot 執行個體。Spot 執行個體收到重新平衡建議後,該執行個體不再計入以滿足容量的一部分。根據替代策略,Amazon EC2 會在預先設定的終止延遲之後終止執行個體,或讓執行個體繼續執行。這讓您有機會在執行個體上執行重新平衡動作

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

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

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

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

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

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

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

Spot Fleet 在縮減或擴展期間計算已滿足容量時,不會計算收到重新平衡建議的執行個體

如果您的 Spot Fleet 已設定容量重新平衡,且您將目標容量變更為縮減或擴展,則機群不會將標示要重新平衡的執行個體計算為已滿足容量一部分,如下所示:

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

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

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

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