容量重新平衡
您可以設定 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
-
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
之前提供兩分鐘警告。強烈建議您不要使用
lowest-price
分配策略與launch-before-terminate
結合,以避免替代 Spot 執行個體也處於提高的中斷風險。 launch
-
針對現有 Spot 執行個體發出重新平衡通知時,Amazon EC2 會啟動替代 Spot 執行個體。Amazon EC2 不會自動終止收到重新平衡建議的執行個體。您可以終止舊的執行個體,也可以讓它們保持執行中狀態。所有執行個體在執行時,您需要支付所有執行個體的費用。
考量事項
如果您設定容量重新平衡的 EC2 Fleet,請考慮下列事項:
- 盡可能在請求中提供更多 Spot 容量集區
-
設定您的 EC2 Fleet,以使用多個執行個體類型和可用區域。這提供了在各種 Spot 容量集區中啟動 Spot 執行個體的彈性。如需更多詳細資訊,請參閱 對執行個體類型和可用區域具有彈性。
- 避免中斷替代 Spot 執行個體的風險提高
-
如果您使用
lowest-price
分配策略,替代 Spot 執行個體的中斷風險可能會提高。這是因為 Amazon EC2 總是會在當時具有可用容量的最低價集區中啟動執行個體,即使您的替代 Spot 執行個體在啟動後很快就會中斷也一樣。為了避免中斷風險的提高,強烈建議您不要使用lowest-price
分配策略,而是改用capacity-optimized
或capacity-optimized-prioritized
分配策略。這些策略可確保在最佳 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 執行個體,直到滿足的容量為目標容量雙倍
-
設定 EC2 Fleet 為容量重新平衡時,機群會嘗試為每個收到重新平衡建議的 Spot 執行個體啟動新的替代 Spot 執行個體。Spot 執行個體收到重新平衡建議後,該執行個體不再計入以滿足容量的一部分。根據替代策略,Amazon EC2 會在預先設定的終止延遲之後終止執行個體,或讓執行個體繼續執行。這讓您有機會在執行個體上執行重新平衡動作。
如果您的機群達到目標容量的兩倍,即使替代執行個體本身收到重新平衡建議,它仍會停止啟動新的替代執行個體。
例如,您建立目標容量為 100 個 Spot 執行個體的 EC2 Fleet。所有 Spot 執行個體都會收到重新平衡建議,這會導致 Amazon EC2 啟動 100 個替代 Spot 執行個體。這會將已滿足 Spot 執行個體的數目提高至 200 個,這是目標容量的兩倍。某些替代執行個體會收到重新平衡建議,但不會再啟動替代執行個體,因為機群不能超過目標容量的兩倍。
請注意,所有執行個體在執行時都需支付這些執行個體的費用。
- 建議您將 EC2 Fleet 設定為終止收到重新平衡建議的 Spot 執行個體
-
如果您設定 EC2 Fleet 進行容量重新平衡,建議您只在可以預測執行個體關閉程序需要多長時間才能完成時,才選擇具有適當終止延遲的
launch-before-terminate
。這將確保只在關機程序完成之後,才會終止舊執行個體。如果您選擇自行終止建議用於重新平衡的執行個體,建議您監控機群中 Spot 執行個體收到的重新平衡建議訊號。透過監控訊號,您可以在 Amazon EC2 中斷受影響的執行個體之前,快速對受影響的執行個體執行重新平衡動作,然後手動終止它們。如果您未終止執行個體,則會在執行時繼續為這些執行個體付費。Amazon EC2 不會自動終止收到重新平衡建議的執行個體。
您可以使用 Amazon EventBridge 或執行個體中繼資料來設定通知。如需更多詳細資訊,請參閱 監控重新平衡建議訊號。
- EC2 Fleet 在縮減或擴展期間計算已滿足容量時,不會計算收到重新平衡建議的執行個體
-
如果您的 EC2 Fleet 已設定容量重新平衡,且您將目標容量變更為縮減或擴展,則機群不會將標示要重新平衡的執行個體計算為已滿足容量一部分,如下所示:
-
縮減 – 如果您減少所需的目標容量,Amazon EC2 會終止未標示要重新平衡的執行個體,直到達到所需容量為止。標示要重新平衡的執行個體不會計入已滿足的容量。
例如,您建立目標容量為 100 個 Spot 執行個體的 EC2 機群。10 個執行個體會收到重新平衡建議,因此 Amazon EC2 會啟動 10 個新的替代執行個體,從而產生 110 個執行個體的滿足容量。然後,您可以將目標容量減少為 50 (縮減),但已滿足容量實際上為 60 個執行個體,因為標示要重新平衡的 10 個執行個體不會被 Amazon EC2 終止。您需要手動終止這些執行個體,或者您也可以讓它們保持運行。
-
橫向擴展 – 如果您增加想要的目標容量,Amazon EC2 會啟動新執行個體,直到達到所需容量為止。標示要重新平衡的執行個體不會計入已滿足的容量。
例如,您建立目標容量為 100 個 Spot 執行個體的 EC2 Fleet。10 個執行個體會收到重新平衡建議,因此機群會啟動 10 個新的替代執行個體,從而產生 110 個執行個體的滿足容量。然後,您將目標容量增加至 200 (擴展),但已滿足容量實際上是 210 個執行個體,因為標示要重新平衡的 10 個執行個體不會被機群計為目標容量的一部分。您需要手動終止這些執行個體,或者您也可以讓它們保持運行。
-