2011-01-28 108 views
13

我們希望在Amazon EC2實例上部署Java EE應用程序(EAR文件部署在JBoss,MySQL,MongoDB)。我有幾個關於部署最佳實踐的問題。在Amazon EC2上部署Java EE應用程序

  1. 什麼是最常用的Linux AMI,我們可以依靠一個可靠的部署(有這麼多的Linux版本,我不知道哪個AMI是常用的,是它的Fedora,CentOS的,紅帽,SUSE ...)
  2. 我們如何處理生產升級(EAR文件修改或模式升級)。是否有任何工具可用於處理此安裝或回滾這些更改。
  3. 什麼樣的數據備份功能可用於數據庫?
  4. 我應該依靠Amazon RDS來支持MySQL嗎?
  5. 我應該如何處理對MongoDB的支持?

這是第一次,我主持一個網絡應用程序,並希望瞭解如何管理生產實例的一些輸入。

回答

4

好問題!

1)我會建議你隨時隨地使用你最喜歡的Linux版本。如果你有一個非常喜歡CentOS的人,那就去吧。一旦你選擇了你的AMI,拿它並通過配置你想要的方式進行定製。然後保存 AMI作爲您的基礎佈局。如果EC2停機,它將使新產品的推出變得更容易,並節省您的培根。

2)EC2升級可以變得很酷。取代預先配置好的AMI,更新它並將AMI保存爲myAMI-1.1(或其他)。這樣,您可以幾乎立即轉到新系統,並在出現故障時回滾到以前的版本。您還可以將數據庫實例備份到S3。它價格便宜,大約爲0.10美元/ GB /月。

3)這取決於你在哪裏存儲數據庫。如果您將其存儲在您的EC2實例中,則有麻煩。 EC2實例沒有持久性存儲。所以如果你的機器崩潰了,你會失去一切。我不熟悉亞馬遜數據庫系統,但您也應該查看Elastic Block Store。它基本上是一個可以寫入的實際硬盤驅動器。當你想升級你的模式時,請將完整的數據庫轉儲到S3,然後升級你的實際模式。如果出現問題,您可以從S3中取出以前的版本。

4)& 5)我從來沒有用過這些,所以我不能幫你。

9
  1. 我同意馬克羅賓遜的答案:使用任何你最喜歡的Unix變體。它可能支付選擇一個體面的雲支持。對於我的網站,我使用Ubuntu。
  2. 我有一個共同的形象,這是我做的每個版本部署的基礎。我有www.mysite.com指向一個彈性IP,所以我可以決定它去哪個實例。通用映像包含我需要安裝的所有軟件(Postgres/Postgis/Tomcat/etc),但數據庫和Web服務器數據文件夾和符號鏈接到Elastic Block Store(EBS)實例。

    當需要進行部署時,我啓動一個新實例,凍結並快照生產中的EBS卷並創建新卷。我將新實例指向新卷,然後將所需的任何內容安裝到該捲上。一旦我抽菸測試一切成功,我可以切換彈性IP指向新的實例,一切都在繼續。

    我會注意到我目前只有我可以修改數據庫的優勢;沒有用戶可以。這將很快成爲問題。

  3. 如果您在EBS捲上使用XFS文件系統,那麼您可以告訴XFS凍結文件系統(因此不會更新),然後調用EC2 API快照卷,然後解凍文件系統。其結果是快照被快速發送併發送到S3。我有一個這樣做的夜間腳本。

  4. 如果RDS看起來像它會適合您的需求然後使用它。亞馬遜正在快速構建大量堅實的工具,如果您有任何問題,這將緩解您的可擴展性問題。

  5. 對不起,我不知道。

0
What is the most commonly used Linux AMI which we can rely on for a robust deployment (There are so many Linux variants, and I am not sure which AMI is commonly used, is it Fedora, CentOS, Red Hat, SUSE ...) 
How do we handle production upgrades (EAR file modifications or schema upgrades). Are there any tools which are available to handle this installation or rollback of these changes. 
What kind of data backup capability is available for the database? 
Should I rely on Amazon RDS for MySQL support? 
How should I handle support for MongoDB? 
  1. 任何Linux AMI將做的工作,你所需要的僅僅是一個JRE。 (假設不需要開發工作)。如果您需要監視JVM行爲,請安裝JConsole。
  2. 最簡單和無痛的方式是SSH進入本地主目錄,傳輸更新後的類文件/ EAR文件(取決於應用的更改次數)並複製並替換到Tomcat部署目錄中,重新啓動apache。 (確保在上傳到產品之前在本地進行測試)。
  3. 取決於您使用的是哪個數據庫,如果您使用的是MySQL,那麼只需執行計劃備份即可寫入您的主目錄,以便您可以不時SSH和下載備份副本。
  4. 由於以下兩個原因,我不會考慮回覆Amazon RDS for MySQL支持:MySQL足夠小並且易於管理,並且我希望對數據庫有完全的控制權,並且爲什麼您可以自己做更多的支付FOC?
  5. MongoDB的使用應與您的應用程序的目的一致,並從中獲益。我建議你使用MongoDB進行靜態數據檢索,例如狀態,國家,地區等......其中MySQL僅用於交易數據。
0

如果您可以在TomEE而不是JBoss上部署您的Java EE應用程序,Boxfuse可以滿足您的需求。

爲您的Java EE應用程序,你從字面上只需要執行(TomEE利用戰爭文件而不是EAR文件):

boxfuse run my-tomee-app-1.0.war -env=prod 

這將

  1. 創建AMI包含TomEE和您的應用程序準備boot
  2. 創建彈性IP或ELB
  3. 創建一個安全組,其中定義了正確的端口
  4. 創建一個自動伸縮羣
  5. 啓動實例(S)

任何後續的更新工作將作爲一個零停機藍/綠部署。

更多信息:https://boxfuse.com/blog/javaee-aws

相關問題