2014-04-19 51 views
0

我有一個配置了生產代碼設置的AMI。我使用Nginx +獨角獸作爲服務器設置。 我面臨的問題是,無論何時流量增加,我需要將實例登錄到實例中,並執行git pull,捆綁更新以及預編譯資產。這很耗時。所以我想避免所有這些過程。在啓動時捆綁服務器更新的最佳方式

現在我想要一個腳本/過程,我可以自動完成整個部署過程,比如從這個AMI啓動一個新實例時,就像git pull,軟件包更新和預編譯一樣。

有沒有最好的方法來完成這個過程?任何幫助,將不勝感激。

+0

'capistrano'有很多任務,你可以編寫捆綁更新/安裝的配方,並重新啓動'獨角獸'(重新啓動kill worker並啓動它們)。 –

回答

0

另一種方法是將您的應用部署到一個單獨的EBS卷(你仍可以掛載這裏面的/ var /網絡/應用程序或無論它目前是)

部署完成後,您將創建此卷的EBS快照。當你創建一個新的實例時,你告訴ec2從快照中爲你的實例創建一個新的卷,所以實例將以已安裝的最新的gems /代碼開始(我發現bundle安裝可能需要幾分鐘)。您的所有啓動腳本需要執行的操作是安裝卷(或者,如果您在創建ami時將其添加到fstab中,那麼您甚至不需要這樣做)。我更喜歡使用這種擴展操作來實現無依賴關係(例如,如果github或rubygems只是在需要部署時纔會停機,你會怎麼做)

你甚至可以通過使用亞馬遜的自動調節服務來進一步做到這一點。簡而言之,您將創建一個啓動配置,您可以在其中指定ami,實例類型,卷快照等。然後,根據固定的計劃或基於cloudwatch指標手動(通過Web控制檯或api)控制組大小。 Amazon將根據需要使用啓動配置中的信息創建或銷燬實例。

相關問題