2014-02-07 46 views
0

我正在創建一個init.d腳本,當實例啓動時將運行幾個任務。EC2 init.d腳本 - 什麼是最佳實踐

  • 它將使用我們的代碼存儲庫創建一個新卷,並在它不存在的情況下掛載它。
  • 將標記實例

上面是完整的將是我們的網站的關鍵任務(即沒有代碼庫安裝該網站將無法正常工作)。我如何確保服務器不會公開可見?我是否應該從ELB中註銷實例來啓動init.d腳本(我甚至不確定它是否會在此時註冊),然後在所有任務成功完成後再次註冊它? 最佳做法是什麼? 謝謝!

回答

1

你應該對你的ELB進行健康檢查。所以你的服務器不應該進入,除非它報告爲高興。如果引導腳本出錯,它不應該報告高興。

(此外,你應該考慮使用雲計算的初始化。這樣,你可以更改啓動腳本而不進行新的AMI)。

1

我建議你改用CloudFormation。您可以通過將其表示爲JSON格式模板來調出系統的完整堆棧。

例如,您可以創建具有獨特標籤和實例的實例已經另一個卷連接的自動縮放組(這大概有你的代碼)

下面是一個示例JSON模板EBS卷附加到一個實例:

https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2WithEBSSample.template

而且你可以使用你的指導和部署具體棧和應用這裏的許多其他JSON模板。

http://aws.amazon.com/cloudformation/aws-cloudformation-templates/

當然你也可以使用的init.d腳本或使用rc.local文件在您的實例完成相同的,但我相信CloudFormation是從外部(不是你的實例內)

一個清潔的解決方案您也可以編寫自己的腳本,通過重新發明輪子來從外部啓動您的堆棧。

希望這會有所幫助。

+0

謝謝,這是一個布里爾建議,但似乎沒有成爲一個使驅動器安裝動態的方法。每次我們的部署發生時,EBS的新快照都將被採用,並且對於任何新產生的實例,我們都需要它們獲取最新的快照,而不是硬編碼到配置中的快照。 –