2017-06-13 27 views
0

我有一個自動縮放組,EC2實現custom health。 有時候,運行狀況檢查失敗,實例被終止並被替換。如何調試自定義運行狀況檢查失敗的EC2實例

運行狀況檢查本身是作爲在實例上運行的shell腳本實現的。如果檢測到問題,它會通過AWS API通知自動縮放組:

aws autoscaling set-instance-health --instance-id $instance --health-status Unhealthy 

的問題是唯一的,我沒有什麼檢查失敗的信息,通知旁邊:

原因:在2017-06-13T09:11:47Z一個實例因服務於用戶健康檢查而停止服務

什麼是建議調試這類問題的方法。有沒有辦法讓AWS只停止實例而不終止它們,因此可以檢查它們的磁盤狀態?


(首先我想到了「啓用終止保護」,但是從我的理解這不會有所作爲,在這裏。自動縮放組仍然會終止情況下,當通過一個失敗的定製健康檢查被要求關機。 )

+0

您的情況是使用ELB健康檢查的Auto Scaling組嗎? –

+0

@JohnRotenstein不,這是一項自定義健康檢查。我有一個本地腳本運行,當它檢測到有什麼問題時,會通過AWS API(「aws autoscaling set-instance-health」)通知自動調整組。 –

+0

@JohnRotenstein我會更新我的問題,所以現在這個信息是覆蓋。 –

回答

2

使用set-instance-health命令告訴Auto Scaling實例不健康,需要更換。 Auto Scaling會終止不健康的實例並啓動一個新的實例來替換它。

如果你希望在一個不健康的實例進行取證分析,從自動縮放組與aws autoscaling detach-instances command刪除:

從指定的自動縮放組中的一個或多個實例。在實例分離後,您可以使用獨立於Auto Scaling組進行管理。

如果您未指定減少所需容量的選項,則Auto Scaling將啓動實例到替換分離的實例。

如果在Auto Scaling組中附加了經典負載平衡器,則會從負載平衡器註銷實例。如果有目標組連接到Auto Scaling組,則會從目標組中註銷實例。

因此,不要致電set-instance-health,請致電detach-instances(並可選擇將其替換)。然後您可以調試實例。如果您希望將其發回服務,請使用aws autoscaling attach-instances

相關問題