2017-03-09 88 views
0

根據AWS文檔,提前2分鐘通知終止SPOT實例。我想通過按需實例替換通知要刪除的SPOT實例來確保我的服務繼續運行。替換即將被按需實例終止的現貨實例

當SPOT實例標記爲終止時,是否有現有方法(內置AWS配置或外部工具)自動替換按需實例的EC2 SPOT實例?

回答

2

雖然現場招標和管理有一些工具,但我不認爲人們會這樣做。我推薦:

  • 不要在生產/關鍵任務/不能停機的情況下這樣做。有一個可以隨時終止的單個實例會很危險(例如,如果這種自動化失敗了)
  • 使用具有不同實例類型的Spot Fleet可以自動有效地保持所需的大小(在這種情況下爲1)。
  • 現貨車隊的替代方案是兩個自動擴展組,一個用於現場和一個點播(最小= 0最大= 1),並自動擴展策略以調整CloudWatch警報的大小。
2

我不認爲它有可能將您的運行點實例轉換爲按需實例(如果這就是您要求的),但是如果您的意思是啓動一個新的ondemand實例,那麼通常你能做到以下幾點:

您應該運行您的實例一個簡單的cron作業,檢查每5秒的終止通知,即

#!/bin/bash 
while true 
    do 
     if [ -z $(curl -Is http://169.254.169.254/latest/meta-data/spot/termination-time | head -1 | grep 404 | cut -d \ -f 2) ] 
      then 
       # Call your script to launch on-demand instance here. 
       break 
      else 
       # Spot instance not yet marked for termination. 
       sleep 5 
     fi 
    done 
+0

這是一個很好的答案,一個有缺陷的問題。技術上從來沒有保證可以啓動任何特定實例類型的按需實例,沒有帶有容量預留的付費預留實例,並且現場實例可能被終止的一個原因是......容量不足。 –

+0

非常真實。如果你絕對需要知道你可以啓動一個實例,那麼保留的實例就是要走的路。 –

+0

我的理解是,實例實例是從未使用的實例池(當前未用於保留或按需的實例)獲取的,並且「容量不足」的終止是由於啓動了新的按需(或保留)實例(因此需要回收現貨實例)。其結果是按需實例請求比在短缺情況下的現場實例請求更有可能被滿足,因爲只要有現貨,它們就可以重新提供以提供新的按需服務。情況並非如此嗎?順便說一句,謝謝你的好回答。 – kgautron