2016-03-15 64 views
0

我們有一個運行容器的AutoScaling組(使用ECS)。當我們在ASG中添加或替換EC2實例時,他們沒有我們想要的泊塢窗圖像。因此,我們使用cloud-init在啓動時運行一些docker pull命令來獲取映像。對於AWS ASG,如何爲新實例設置自定義就緒檢查?

但是,ASG認爲新實例已準備好並終止舊實例。但事實上,這個新實例還沒有準備好,直到所有的碼頭圖像被拉下來。


例如 假設我的ASG需要的計數是5,並且我必須使用cloud-init抽取5個容器。現在,我想要替換ASG中的所有EC2實例。

當新實例開始啓動時,ASG將終止舊實例。但由於docker pull滯後,會有部署,當實際有效實例將是較小的超過3或2


我如何「標誌着一個實例,準備」 只有雲時,在一段時間-init完成?

注意:我認爲Cloudformation可以使用CFN-Bootstrap彌合這種溝通差距。但我沒有使用Cloudformation。

回答

1

你看到的是AutoScaling Lifecycle Hooks。您可以將一個實例保留在Pending:Wait狀態,直到您完成docker pull。然後您可以將該實例移至InService。所有這些都可以使用AWS CLI完成,因此應該可以在docker命令前後使用AWS AutoScaling命令實現。

我提供的文檔鏈接詳細解釋了此功能,並提供了有關如何使用它的很好示例。

+0

這按預期工作! Ansible工具在ASG上創建生命週期掛鉤。然後在用戶數據中,EC2實例執行耗時的docker-pull命令,然後向ASG掛鉤發送一個continue信號。 ASG縮放/滾動繼續! –

相關問題