在 EC2 上运行 Java EE 应用程序
Posted
技术标签:
【中文标题】在 EC2 上运行 Java EE 应用程序【英文标题】:Run Java EE app on EC2 【发布时间】:2011-01-06 05:47:18 【问题描述】:谁能指出我描述的步骤/资源:
-
如何在 amazon-EC2 上部署 Java EE 应用程序
在实例重新启动后(可能使用 amazon-ebs)维护对应用服务器元数据的更改(部署新应用程序)
【问题讨论】:
【参考方案1】:如果您还没有通过它,请先检查一下: http://docs.aws.amazon.com/gettingstarted/latest/awsgsg-intro/intro.html 它会让你了解它是如何工作的。
关于在 EC2 上运行 Java EE 应用程序,您有多种选择 - 但它们通常归结为以下方法:
-
启动实例
安装 Java EE 应用服务器 (tomcat/glassfish/websphere/...)
将您的应用程序 (war/ear) 安装到应用程序服务器中
现在您可以将上述内容捆绑到一个 ebs ami 中,或者您可以编写一个脚本 (bash/sh/tcl) 在您的实例启动时应用这些更改(我更喜欢)。这些脚本允许您修改安装/启动/移动的内容,而无需重新捆绑您的实例。
这里有一些很棒的资源:@987654322@
希望对您有所帮助。
【讨论】:
修复了 AWS 入门指南的链接(正在同行评审中)。【参考方案2】:如何在 amazon-EC2 上部署 Java EE 应用
您仍然部署到应用程序服务器,因此并没有什么不同。如果您有更具体的问题,请澄清。但是看看Running JEE applications on Amazon EC2 和How to deploy a java web application on an ec2 instance。
在实例重启后(可能使用 amazon-ebs)维护对应用服务器元数据的更改(部署新应用程序)
如果您使用 Amazon EBS,则无需担心,Amazon EBS 卷是独立于实例生命周期的非实例存储。
【讨论】:
【参考方案3】:亚马逊 AWS 新推出的 Elastic BeanStalk 可以解决您的疑虑。 您可以通过 Bean Stalk 在 Amazon Ec2 实例上部署 Java EE 应用程序。您需要做的就是创建一个新的应用程序并在其中创建一个环境并添加您的 WAR 文件以进行部署,AWS 有自己的 Tomcat 6/7 版本,带有开放的 JDK,如果需要,可以定制为 Sun JDK。
因此,亚马逊提供了完整的部署工具,只需在 BeanStalk 中部署即可开始使用您的应用程序。 BeanStalk 提供 Auto Scaling 和弹性负载平衡以及更多功能来自定义您的应用程序环境。
【讨论】:
【参考方案4】:如果您启动 ebs 启动的实例,则无需关心重启后的持久性(请参阅 http://aws.amazon.com/about-aws/whats-new/2009/12/03/amazon-ec2-instances-now-can-boot-from-amazon-ebs/) 关于 Java EE 的部署,我认为在非虚拟操作系统上部署它没有任何区别。
【讨论】:
【参考方案5】:Boxfuse 支持通过单个命令将使用 Tomcat、TomEE Web Profile 或 TomEE Plus 的 Java EE 应用程序部署到 AWS
boxfuse run mytomeeapp-1.0.war -env=prod
这将创建一个映像、预置所有必要的 AWS 基础设施并启动实例。它支持使用弹性 IP 和 ELB 进行蓝/绿零停机更新。
您可以在这里找到教程:https://boxfuse.com/blog/javaee-aws.html
您不必担心维护对元数据的更改,因为所有实例都是不可变的并且包含所有必要的应用服务器信息。
免责声明:我是 Boxfuse 的创始人兼 CEO
【讨论】:
以上是关于在 EC2 上运行 Java EE 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Java 计划任务是不是在 AWS Auto Scaling 组的所有 EC2 实例上运行?
如何使用 JMX 连接到在 EC2 上运行的 Java 实例
选择嵌入式 EJB 3.x 容器在 Tomcat 上运行 Java EE 5 应用程序
在 EC2 中部署的 Tomcat Webapp 无法与 Postgres RDS 实例通信
如何使用 Jax-RS(Jersey) 在 Tomcat7 上运行应用程序 Hibernate 5.x、Jpa 2.1、Java EE7(javaee-api 7.0)