容量重新平衡 - Amazon Elastic Compute Cloud

容量重新平衡

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

若要設定 EC2 Fleet 以啟動取代 Spot 執行個體,請使用 create-fleet (AWS CLI) 命令和 MaintenanceStrategies 結構中的相關參數。如需詳細資訊,請參閱範例啟動設定

限制

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

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

組態選項

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

launch-before-terminate

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

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

強烈建議您不要使用 lowest-price 分配策略與 launch-before-terminate 結合,以避免替代 Spot 執行個體也處於提高的中斷風險。

launch

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

考量

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

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

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

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

如果您使用 lowest-price 分配策略,替代 Spot 執行個體的中斷風險可能會提高。這是因為 Amazon EC2 總是會在當時具有可用容量的最低價集區中啟動執行個體,即使您的替代 Spot 執行個體在啟動後很快就會中斷也一樣。為了避免中斷風險的提高,強烈建議您不要使用 lowest-price 分配策略,而是改用 capacity-optimizedcapacity-optimized-prioritized 分配策略。這些策略可確保在最佳 Spot 容量集區中啟動替代 Spot 執行個體,因此不太可能在不久的將來中斷。如需詳細資訊,請參閱 使用容量最佳化分配策略

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

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

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

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

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

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

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

* 如果指定了 launch-before-terminate,EC2 Fleet 將在取代執行個體連線後終止有風險的執行個體。

EC2 Fleet 可以啟動新的替代 競價型執行個體,直到滿足的容量為目標容量雙倍

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

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

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

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

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

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

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

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

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

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

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

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

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

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