2012-11-19 48 views
1

我是AWS新手。任何人都可以指出我如何更新駐留在多個ec2實例上的應用程序的正確方向?如何更改多個ec2實例上的應用程序?

我找到了這個答案:How do I update multiple EC2 instances that are load-balanced?它指向這篇文章:http://linuxforlovers.wordpress.com/2009/04/11/sharing-amazon-elastic-block-store-among-multiple-instances/這篇文章已經更新,並解釋你可以從EBS支持的AMI啓動,現在可以有基本上無限的大小。

這是否意味着我可以使用我的應用程序更新ebs實例,我可以在ec2實例上加載該應用程序,創建一個保存到ebs卷的ami,然後從EBS支持的ami啓動?

這是否意味着我將啓動配置設置爲使用ami的ebs卷而不是僅ami?

從本質上講,我的問題是,如何更新我的應用程序在多個ec2實例上運行,而無需登錄到每臺機器並更改應用程序?

謝謝!

回答

1

我認爲實現這一目標的方法是創建一個新的ami,並推出每一款新軟件。然後,您爲每個ami構建新的啓動配置。然後,您使用新的啓動配置更新縮放組。

2

Netflix使用您描述的方法,每個新的應用程序版本都創建了自己的AMI,然後他們使用開源軟件Asgard進行滾動重新啓動,終止舊實例併產生運行新AMI的新實例。

這是一個完全有效的工作方式,但對於我的大多數工作來說都是過分的。 AMI的構建和管理通常比簡單地將新軟件放在服務器上更麻煩。我主要使用capistrano來自動啓動代碼(主要涉及到執行git pull)並重新啓動Web服務器,並且我使用chef來更改服務器配置和第三方軟件安裝。如果系統變化足夠多,我會刻錄一個新的AMI並使用它重新啓動。

所以我認爲這取決於您的工作流程的哪些方面正在創造瓶頸。如果只是部署自動化,請檢查Capistrano和廚師。如果更新你的應用程序涉及到很多摩擦和部署的麻煩,AMI可能是一個好方法。無論哪種方式,我總是確保我的廚師食譜可以建立服務器到任何特定的軟件版本規格。希望這可以幫助。

+0

我只想在ec2實例上推送我的應用程序的新版本,我沒有其他服務器配置更改。我如何在一個地方更改我的應用程序,並將其更新爲所有實例? – Atma

+2

那麼,要做到這一點,你可以讓你的一個實例成爲NFS服務器,導出一個卷並讓所有實例共享該文件系統。但是通過像'git pull','rsync'命令或'scp'命令那樣使每個服務器獲得相同的代碼更新的過程自動化變得容易得多。 – platforms

0

現在OpsWorks已經發布,現場已經轉移了一下。看看這個,因爲它是亞馬遜支持的做你想做的手段 - 可能是爲了你的需要矯枉過正。

0

檢出capistrano,這是一個用Ruby編寫的部署工具,用於解決您描述的問題。

雖然它是一個Ruby工具,但它可以用來部署不是Ruby的應用程序。

它管理同時SSH到多個服務器,更新代碼,並執行適合每個服務器角色的部署任務。

0

您可以使用AWS CodeDeploy在多個EC2上更新您的應用程序。它通過在實例間逐步工作並允許應用程序保持可用並繼續提供流量來最大限度地減少停機時間。

您還可以跟蹤部署,停止,回滾..如果您的應用在EC2上運行,則它是免費的。

相關問題