[英]How to execute a shell script as a result of an aws auto-scale event
當前,我們已經將我們的EC2應用程序服務器連接到一個自動擴展組,但是缺少一個步驟:一旦啟動了新服務器,我們就不會自動從git repo上部署最新代碼
我正在閱讀本教程:基本上,我想在實例啟動后立即運行一堆命令,但要先將其連接到負載均衡器。
上面的教程介紹了一般情況,但是我無法回答以下問題:
我認為您不需要生命周期掛鈎,當您想在不同的統計信息(例如停止,啟動和終止)中執行操作時,生命周期非常有用,而您只需提取最新的代碼和一些其他命令即可。
為了回答您的問題,我將建議采用以下方法,因為同一任務還有許多其他方法。
user data
中即可。 您可以將它們作為bash腳本運行,也可以從aws s3中提取腳本。 這可能是處理拉碼案例的最簡單示例。 因此,只要此自動伸縮組中有新實例啟動,此命令便會運行。 另一個示例可以是運行復雜的腳本,將它們放在s3上,然后在放大時拉出它們。
我假設您已經設置了s3和bitbucket的權限。 您可以在此期間運行任何復雜程序。
另一種方法可以是
a):健康檢查寬限期
通常,剛投入使用的Auto Scaling實例需要先進行預熱,然后才能通過運行狀況檢查。 Amazon EC2 Auto Scaling等待運行狀況檢查寬限期結束,然后再檢查實例的運行狀況。
b)自定義健康檢查
如果您擁有自己的運行狀況檢查系統,則可以將實例的運行狀況信息直接從系統發送到Amazon EC2 Auto Scaling。
使用以下set-instance-health命令將指定實例的健康狀態設置為“不健康”。
aws autoscaling set-instance-health --instance-id i-123abc45d --health-status healthy
您可以使用curl調用獲取實例ID,curl調用是我們放置在userdata中的腳本。
如果您具有自定義運行狀況檢查,則可以將運行狀況檢查中的信息發送到Amazon EC2 Auto Scaling,以便Amazon EC2 Auto Scaling可以使用此信息。 例如,如果您確定某個實例無法正常運行,則可以將該實例的運行狀況設置為“不正常”。 下次Amazon EC2 Auto Scaling對實例執行運行狀況檢查時,它將確定實例不正常,然后啟動替換實例。
c)實例熱身
使用逐步擴展策略,您可以指定新啟動的實例進行預熱所需的秒數。 在指定的預熱時間到期之前,不會將實例計入Auto Scaling組的聚合指標。 在向外擴展時,AWS也不會將正在預熱的實例視為該組當前容量的一部分。 因此,落入同一步長調整范圍內的多個警報違規將導致單個縮放活動。 這樣可以確保我們添加的實例不會超出您的需要。
再說一遍,第二步沒什么大不了的,您可以使用腳本來控制流程,最后啟動應用程序,這樣它將被標記為正常,
您也可以嘗試在進入/退出時保持待機狀態,但是我認為通過自定義健康檢查進行熱身可以完成此工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.