簡體   English   中英

Amazon EC2上的Java EE應用程序部署

[英]Java EE application deployment on Amazon EC2

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

  1. 什么是最常用的Linux AMI ,我們可以依賴它來實現強大的部署(有很多Linux變種,我不確定哪種AMI常用,是Fedora,CentOS,Red Hat,SUSE ......)
  2. 我們如何處理生產升級(EAR文件修改或模式升級)。 是否有任何工具可用於處理此安裝或回滾這些更改。
  3. 什么樣的數據備份功能可用於數據庫?
  4. 我應該依靠Amazon RDS來支持MySQL嗎?
  5. 我該如何處理MongoDB的支持?

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

  1. 我同意Mark Robinson的回答:使用你最熟悉的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. 對不起,我不知道。

好問題!

1)我建議你選擇最適合自己的Linux版本。 如果你有一個非常熱衷於CentOS的人,那就去吧。 選擇AMI后,請通過配置AMI來獲取AMI並進行自定義。 然后在基礎布局時保存 AMI。 如果EC2發生故障,它將使新機器的推出變得更加容易並節省你的培根。

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

3)這取決於您存儲數據庫的位置。 如果您將它存儲在您的EC2實例上,則您遇到了麻煩。 EC2實例沒有持久性存儲。 因此,如果您的機器崩潰,您將失去一切。 我不熟悉Amazon DB系統,但您也應該查看Elastic Block Store。 它基本上是一個你可以寫的實際硬盤。 如果要升級架構,請對S3執行完整的數據庫轉儲,然后升級實際架構。 如果出現問題,您可以從S3中刪除以前的版本。

4)&​​5)我從未使用過這些,所以我無法幫助你。

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

對於Java EE應用程序,您只需要執行(TomEE使用war文件而不是ear文件):

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

這將

  1. 創建包含TomEE的AMI,並准備好啟動應用程序
  2. 創建彈性IP或ELB
  3. 創建一個定義了正確端口的安全組
  4. 創建自動縮放組
  5. 啟動您的實例

任何后續更新都將作為零停機藍/綠部署完成。

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

 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上的MySQL支持:MySQL足夠小且易於管理,而且我還希望完全控制數據庫,為什么在你自己做FOC時支付更多?
  5. MongoDB的使用應與您的應用程序的目的一致,並從中獲益。 我建議您使用MongoDB進行靜態數據檢索,如州,國家,地區等......其中MySQL僅用於交易數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM