2017-07-17 70 views
2

我們使用亞馬遜EC2 Auto Scaling組來處理一堆應用程序 - 衆所周知,當您儘量不要發生內存泄漏和其他「一段時間的問題」時 - 這仍然是可能的。一段時間後自動終止Auto Scaling實例

我們希望通過反彈服務器來防止這種可能性 - 即確保實例只能在殺死它之前24小時持續。但是,我們希望殺戮是「安全」的 - 例如 - 即使組中只有一個實例,我們想要啓動另一個實例爲工作狀態,然後然後殺死舊盒子。

有沒有這方面的支持?例如實例上的生存時間屬性?

回答

1

Amazon EC2和Auto Scaling中都沒有這樣的屬性。

您可以手動set the instance healthUnhealthy,這會導致Auto Scaling終止並替換實例。但是,如果您只有一個實例,那麼可能會有一段時間沒有實例。

您可以將Auto Scaling termination policy設置爲OldestInstance,這表示當自動縮放需要終止實例時,它將終止AZ中具有最多實例的最舊實例。這樣可以擺脫舊的實例,但只有當該組縮小時纔可以。

因此,你可以用腳本補充終止政策秤出組,然後它會導致規模,在一次。例如,將實例數加倍,等待它們啓動,然後減半實例數。這應該會導致它們全部刷新(如果您的實例分佈在多個AZ中,導致非均勻計數,那麼會有一些邊緣條件)。

另一個選項是重新啓動實例。這將而不是導致它們對Auto Scaling顯示不健康,但它們對Load Balancer不健康。 (如果您在Auto Scaling中激活了ELB健康檢查,則Auto Scaling實際上會終止健康檢查失敗的實例)。您可以使用Scheduled Events for Your Instances讓Amazon CloudWatch Events以特定間隔重新啓動實例,甚至可以使用腳本在實例中告訴操作系統以特定的時間間隔重新啓動。

但是,沒有自動選項可以完全按照您的要求進行操作。