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

use*_*108 14 mysql deployment amazon-ec2 java-ee amazon-web-services

我们有一个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的支持?

这是我第一次托管一个网络应用程序,并希望了解如何管理生产实例的一些输入.

Sar*_*rge 10

  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. 对不起,我不知道.


Mar*_*son 4

好问题!

1) 我建议您使用您最喜欢的任何 Linux 版本。如果你有人真正热衷于 CentOS,那就跟着他吧。选择 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)我从未使用过这些,所以我无法帮助你。