[英]How to deploy a Eclipse Java Web Dynamic Project on Amazon EC2?
[英]How to deploy a Java webapp on Amazon EC2 so that you can efficiently use autoscaling?
我正在努力弄清Amazon Web Services上的一个简单WebApp Java部署案例。
我已经在单个EC2实例上手动部署了,在香草RedHat映像上手动安装了Java,Tomcat,MySql,就像我拥有硬件一样。
现在,我正在尝试建立一个可自动扩展,易于管理的生产证明环境:
我知道自动缩放取决于某些触发器(例如,超过使用百分比)。 但是,启动新服务器后,由于我的应用程序不在VM映像中,因此未部署我的应用程序。 需要发生一些事情,以便新服务器运行我的代码。
像Chef或Puppet这样的商业工具呢? 有开源等效项吗?
我在网上回顾了很多事情,是的,正如Georges所说,ElasticBeanStalk是正确的选择。 虽然,一开始感觉很混乱。
首先,您可以使用t2.micro实例在Free层上运行负载平衡/可扩展的环境。 重要的是总小时数。 您可以使用100台服务器使用7个小时,这样就可以了。 请谨慎使用“健康检查”,因为它会一直ping您的环境。 如果您运行测试/评估并不想付费,请确保保存/备份并尽快终止环境。 数据传输显然不是免费的,因此,如果您不想付款,请确保不要使用任何多可用区和多区域。
也就是说,BeanStalk是一种“黑匣子”,可以为您做很多事情。 旨在为您在控制台中创建所有配置。 一种用于负载平衡/可扩展环境的“超级向导”。
配置是这样的:您说您有一个要部署的战争文件,将其上传,然后选择一个容器(例如linux + tomcat),设置一个数据库,它将创建一个基本配置,其中包含您想要的所有内容:加载平衡,自动缩放和监视。 可以轻松更改设置以满足您的需求。
一件事棘手的是数据库配置:您需要设置环境变量,并按照以下方式在您的Spring配置中使用它们: https : //raymondhlee.wordpress.com/2013/06/01/migrating-a-java-web-app-for -deploy到AWS-弹性豆茎/
应用程序更新可以“滚动”方式进行,即仅在有限数量的服务器机群中进行(默认值为30%),这意味着您不必担心停机时间。
Boxfuse可以满足您的需求。
对于Java Web应用程序,您只需执行以下操作:
boxfuse create my-tomcat-app -apptype=load-balanced
boxfuse scale my-tomcat-app -capacity=1-16:t2-micro:cpu25-75
boxfuse run my-tomcat-app-1.0.war -env=prod
这将
任何后续更新将作为零停机时间蓝/绿部署进行。
更多信息: https : //boxfuse.com/blog/auto-scaling
您可以在EC2启动配置上使用用户数据 。 您可以使用它来将Shell脚本传递给您的实例,该实例在首次启动时会自动运行。 如您在问题中所建议的,一种常见的模式是让Shell脚本从S3下载并安装构建。
使用这种模式,升级自动扩展组上的构建很容易。 只需将新的版本上传到S3。 然后,手动终止自动扩展组中的实例。 自动缩放将自动启动新的EC2实例,该实例将从S3下载新的版本,并保存您的自动缩放组。 如果您一次终止一个实例,并且在终止下一个实例之前等待新实例上线,则对系统的影响将降至最低。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.