我可以在单个EC2实例上运行多个Web应用程序吗?

我需要降低我的AWS成本,并寻找方法来减less我的AWS使用量。 我目前有一个单独的java / tomcat webapp,我使用不同的configuration运行多个EC2实例。 我在同一个ElasticBeanstalk环境下拥有自己的EC2实例siteone.com和sitetwo.com。 这些实例是负载平衡的,(我正在考虑移除负载平衡的成本),他们都需要SSL和连接到RDS实例。 他们目前都在同一个VPC。 为了减less我的成本,我需要减less我的实例。 我如何才能在单个EC2实例上运行多个tomcat Web应用程序。 我是唯一的开发者,可以使用一些方向。 谢谢!

你可以在同一台机器上运行两个实例。 并使用Apache的mod_proxy在内部redirect您的stream量到正确的webapp(透明的用户)。

因此,您将需要设置一个应用程序来侦听localhost:1337和另一个在localhost:1338 。 您还必须更改DNS设置,以使您的webapp的这两个url指向单台计算机的IP地址。 Apache whill然后能够通过查看用户提供的URL( webapp1.comwebapp2.com )将他的stream量发送到正确的webapp。 如果是webapp1.com它会把webapp1.com转发给localhost:1337 ,在另外一种情况下,它会把webapp1.com发送到localhost:1338

我发现这个使用谷歌“EC2 mod_proxy”: http : //flurdy.com/docs/ec2/apache_tomcat/#twoServers

(无耻自我推销): http :

什么beardhatcode说(虽然我宁愿Nginx,甚至HAproxy),当然,你可以考虑删除RDS实例通过让数据库在同一主要实例。 不pipe这是不是一个好主意取决于数据库的规格,但这是一个选项。

从Elastic Beanstalk切换到OpsWorks可能是最简单的解决scheme。 OpsWorks支持每个“堆栈”(可能只有一个实例)的多个应用程序。