tomcat web 应用程序的硬件推荐

tomcat web 应用程序的硬件推荐

我们正在测试系统 (CentOS) 上运行一个 Web 应用程序,如下所示 - 一个 Web 服务器 (apache)、两个运行相同 Web 应用程序的 tomcat 实例、一个 PostgreSQL 数据库 - 每个都在四个虚拟服务器上。该应用程序将由数千名用户使用,并且还需要存储一些敏感的用户数据。我们计划将其转移到生产系统中,并寻求一些关于为此功能选择合适硬件的建议。我非常乐意接受任何具有成本效益且最适合此环境的建议(VM 或专用或混合)。我想我正在寻找的是instant failover。有人可以建议我运行这些服务可能需要的规格和任何额外设备吗?

我想到了一些事情:对于 DB 服务器,我正在考虑一个专用服务器 - 系统磁盘使用 RAID 1 镜像,DB(本地存储)使用 RAID10。或者我们应该使用 FC 进行一些共享存储?最快的 tomcat 磁盘(这是瓶颈 - 不是吗?)、Web 服务器故障转移的 Round-Robin DNS 和每个盒子的专用 GbE 用于网络 I/O 带宽。但我非常有兴趣看看其他人如何设计他们的系统(CPU、RAM、额外的硬件、进程等),同时牢记这些要求。欢迎任何意见,非常感谢。提前致谢。干杯!!

答案1

在httpd / tomcat端,我们这样做的方式是:

在一台服务器上,在不同端口上运行一个 httpd 和两个 tomcat 实例。我们使用 mod_jk 通过 ajp 与 tomcat 通信,并配置 mod_jk 以在两者之间进行负载平衡(或者在某些情况下,进行主动/被动故障转移,并让 mod_jk 确定何时进行故障转移)。

我们运行上述多个服务器实例,并在前面使用实际的硬件负载平衡器与所有 httpds 通信。为了处理硬件负载平衡器的单点故障,我们将整个设置复制到不同的数据中心,然后使用 DNS 游戏通过 Dynect(它还能够在发生故障时将负载转移到其他数据中心)在地理上平衡人员负载。

我们在每台服务器上运行两个 tomcat 实例的部分原因是,这样我们就可以更轻松地将软件更新应用于应用程序,而不会影响我们处理峰值负载的能力。是的,这使我们的 RAM 需求增加了 2 倍,但这比以我们的方式将系统数量增加一倍要便宜得多。

在您的设置中,您要处理的是单个 tomcat 服务器死机的情况,而不是前端 httpd 的情况。您最好构建一对使用 heartbeat/corosync/pacemaker 来处理前端故障转移的前端 httpd 服务器。它不会是“即时故障转移”,但接近即时故障转移。大多数人可以忍受几秒钟的切换时间。

相关内容