多个Tomcat实例在EC2实例上有意义吗?

时间:2013-03-10 21:46:27

标签: tomcat amazon-web-services amazon-ec2 railo cfml

我正在AWS EC2(Ubuntu)实例上安装Railo。我遇到了这个guide for installing Railo on Ubuntu with multiple Tomcat7 instances,它提示了以下问题:

鉴于能够“激活”多个EC2实例并使用弹性IP / Route 53进行负载平衡,是否配置每个单独的EC2实例以运行多个Tomcat实例提供额外的好处?是否值得,还是只是多余的?

2 个答案:

答案 0 :(得分:2)

你必须确定你的瓶颈:如果你的服务器使用一个tomcat的内存不足,那么启动第二个tomcat是没有用的。此外,如果您的CPU被最大化,那么通常没有优势来实现第二个tomcat。

但是,如果你在不同的服务器之间进行平衡,在一台机器上有足够的CPU和内存,你可能会在一台机器上运行两个tomcats获得一些东西:例如您可以从负载均衡器中一次删除其中一个,更新它并再次将其添加到平衡器 - 然后对第二个执行相同操作。

但是......无论如何,你可以使用一个tomcat执行此操作。

我害怕:你必须通过测量来回答这个问题:如果你得到的负载可以由4个EC2实例上的4个tomcats处理,那么它也可以由2个EC2上的4个tomcats处理实例?您运行的每个EC2实例上通常有多少资源(CPU,内存,I / O)?这一切都严重依赖于您的用例以及机器实际执行的操作。

更多示例:如果在剩余CPU和内存时网络带宽已经饱和,则第二个tomcat将不会在计算机上利用更多带宽 - 它只会降低另一个tomcat的吞吐量,因为它们必须共享连接带宽。

如果您的网络带宽未饱和并且您的tomcat正在等待外部资源(例如,Web服务,数据库),那么将剩余的CPU和内存与第二个实例一起使用可能是有意义的。

但是那时有弹性:如果一个EC2实例出现故障,那么你需要两个tomcats。你能容忍这一点,或者这就是为什么你首先去云端的原因?

答案 1 :(得分:1)

根据Olaf的回答,这取决于您对容错和成本的要求,原因有两个。我记得读过一篇文章,说明一个更大的实例比具有相同容量的几个小实例便宜,我不记得URL但是很容易做数学。

不应将Amazon实例视为永久性实例,并且主机可以随时关闭,将所有虚拟机(包括您的虚拟机)随身携带。因此,您将丢失该EC2实例中的所有Tomcat实例。当然,你可以提供足够的供应,这样损失不是问题,但这里是你知道你的应用程序的地方。

但是还有别的东西:在同一台机器上有多个Tomcat实例,你必须管理他们正在监听的端口,这样就不会发生冲突。并配置Elastic Load Balancer以便使用所有这些。可行,但比在同一端口上监听多个EC2实例有点麻烦。