0

我正在 AWS EC2 (Ubuntu) 实例上安装 Railo。我遇到了这个在 Ubuntu 上安装 Railo 和多个 Tomcat7 实例的指南,它提示了以下问题:

鉴于能够“启动”多个 EC2 实例并使用弹性 IP/Route 53 进行负载平衡,将每个单独的 EC2 实例配置为运行多个 Tomcat 实例是否会带来额外的好处?这是值得的,还是只是多余的?

4

2 回答 2

2

您必须确定您的瓶颈:如果您的服务器在使用单个 tomcat 时内存不足,则启动第二个 tomcat 是没有用的。此外,如果您的 CPU 已用尽,则启动第二个 tomcat 通常没有任何优势。

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

但是...无论如何,您都可以使用每个 VM 一个 tomcat 来执行此操作。

恐怕:您必须自己回答这个问题,通过测量:如果您获得的负载可以由 4 个 EC2 实例上的 4 个 tomcat 处理,那么它是否也可以由 2 个 EC2 实例上的 4 个 tomcat 处理?您运行的每个 EC2 实例通常有多少可用资源(CPU、内存、I/O)?这一切都在很大程度上取决于您的用例以及机器实际在做什么。

更多示例:如果您的网络带宽饱和,而您还有 CPU 和内存,则第二个 tomcat 将不会利用机器上的更多带宽 - 它只会降低另一个 tomcat 的吞吐量,因为它们必须共享连接带宽。

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

但是还有一点弹性:如果一个 EC2 实例出现故障,它会占用你的两个 tomcat。你能容忍这一点吗?或者这就是你最初选择云端的原因吗?

于 2013-07-05T12:12:22.340 回答
1

添加到奥拉夫的回答中,这取决于您对容错和成本的要求,原因有几个。我记得读过一篇文章,说一个较大的实例比几个具有相同容量的较小实例便宜,我不记得 URL,但计算起来很容易。

不应将 Amazon 实例视为永久实例,并且主机可能随时关闭,并带走所有虚拟机,包括您的虚拟机。因此,您将丢失该 EC2 实例中的所有 Tomcat 实例。当然,您可以提供足够的资源,因此丢失不是问题,但您可以在这里了解您的应用程序。

但是还有一些别的东西:在同一台机器上有多个 Tomcat 实例,你必须管理它们正在监听的端口,这样就不会发生冲突。并配置弹性负载均衡器,以便使用所有这些。可行,但比在同一个端口上侦听多个 EC2 实例有点混乱。

于 2013-07-06T01:45:32.540 回答