2016-11-09 273 views
0

我想保持停止的Amazon EC2實例池池的可用性。只要金額低於閾值,我希望能夠創建新的實例,然後在運行後立即停止。僅在亞馬遜基礎設施內是否可能?確保停止EC2實例

+0

您能否提供有關*爲什麼*您希望這樣做的信息?實現目標可能有更好的方法(例如,使用Auto Scaling在需要時啓動新實例)。 –

+0

啓動停止實例的時間比創建新實例的時間短得多。 –

+0

那麼,你正在尋找一種快速向外擴展的方式?您是否考慮過[Amazon EC2容器服務](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)?它可以在幾秒鐘內部署容器(例如與您的應用程序)。你目前遇到什麼困難,導致實例發佈太慢?啓動實例時是否使用完全配置的AMI?你使用的是Linux還是Windows? –

回答

1

你也可以創建亞馬遜的EC2實例,然後阻止他們,使可用以後開始。正如你指出的那樣,這有利於實例的啓動速度快於啓動新實例。

沒有協助此自動化方法。你可能不得不編寫一個解決方案,具有以下功能:

  • 監視器停止實例的數量
  • 如果數量低於閾值,推出一個新的實例
  • 新的實例可自動地停止本身通過用戶數據(經由一個關斷命令給操作系統,或經由StopInstances呼叫到EC2)

有些事情你必須考慮:

  • 什麼觸發監控?它會按計劃嗎?
  • ,會啓動新的實例將需要等待新實例啓動&停止啓動任何更多的實例
  • 需要他們什麼時候開始實例之前的任務是什麼?
  • 是否有實例獲得已停止何時不再需要它們?

的更好的選擇是使用自動縮放,基於一些度量的向外擴展的報警,說你的艦隊正忙,和規模的報警刪除實例時,船隊不忙。一旦通過閾值(例如80%CPU),可以設置向外擴展警報,以便在事情100%忙碌之前允許新實例啓動。啓動新實例和啓動現有實例之間的時間差異很小(至少對於Linux)。

如果您使用的是Windows,啓動新實例時的最大延遲時間是由於Sysprep,這使得「乾淨」機器具有新的唯一ID。您可以通過創建沒有Sysprep的AMI來進行欺騙,從而啓動速度更快。

+0

謝謝@Johnson Rotenstein。我們目前有一個等待狀態改變的編碼解決方案。我不知道用戶數據可以用於此目的,我當然不知道Sysprep。優秀的答案。 –

0

也許我誤解你的目標...你不能「確保可用性」的實例沒有付錢。

實例處於停止狀態都只是實際並不存在的任何地方的邏輯實體 - 硬件分配上發射,釋放上停止,重新分配下次啓動。在不太可能的情況下,如果給定實例類的可用區域耗盡了容量,則該類的已停止實例將無法啓動,因爲沒有可供部署的硬件。

爲了確保實例始終可用,必須保留它們,你必須指定一個特定的可用性區的保留:

亞馬遜EC2預留實例提供顯著的折扣(高達75% )與按需定價相比較,並在特定的可用區中使用時提供容量預留[強調]

https://aws.amazon.com/ec2/pricing/reserved-instances/

在大多數計劃,預留實例支付相同速度是否正在運行與否,因此會有小點阻止他們。

+0

你誤解了這個問題。我想爲每個區域保持一定數量的處於「停止」狀態的實例。假設這個數字是10.每當其中一個實例「啓動」時,我想創建另一個實例,一旦它「運行」就會停止。而已。 –

+0

該計劃如何在您需要時啓動實例更有用/有用?該戰略的好處是什麼? –

+0

我們現在要脫離主題,但我會放縱。自動縮放時,啓動停止實例所花費的時間要比創建等效實例所用的時間短得多。 –