只能将tomcat用作负载均衡器(不使用Apache Http Server)

时间:2012-08-01 07:55:30

标签: java tomcat tomcat6 apache-servicemix

后台:在我的应用程序中,我使用 ServiceMix 实例来提供HTTP请求。为了平衡这些,我们想出(根据一些要求)我们需要使用Tomcat。

问题:我认为应该说tomcat内置了自己的http服务器,Tomcat和mod_jk(没有Apache Http Server)可以用作负载均衡器吗?

我的阅读:我阅读了一些Tomcat domcumentation,如Tomcat Clustering docTomcat JK load balancer(这不太有帮助)

所以我想知道甚至可以仅使用Tomcat和mod_jk来实现负载平衡!!

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

要对应用程序进行负载平衡,您需要使用相同的应用程序运行两个或更多Tomcat实例。您可以在不同端口上的同一台计算机上运行两个实例(例如www.myapp.com:8080和www.myapp.com:9090),也可以在同一端口上的不同计算机上运行(例如www1.myapp.com:8080和www2。 myapp.com:8080)。通常,实例共享相同的后端数据存储。每个Tomcat都是自己的Web服务器,因此您将运行多个Web服务器。

因为您现在有两个相同的实例,所以用户可以使用这两个实例中的任何一个。如果他们当前正在使用的机器出现问题,他们也可以从一个切换到另一个。但您不希望用户必须手动选择机器或交换。这是负载均衡器的用武之地。

负载均衡器接收来自用户的请求,并将其动态路由到您的一个负载平衡实例。负载均衡器也是Web服务器。它可以是像BIG-IP F5这样的硬件负载平衡器,也可以是Apache,nginx甚至是其他Tomcat服务器之类的软件。

如果您使用Apache Web服务器进行负载平衡,则需要Apache模块将请求传递给您的某个Tomcat服务器。通常这是mod_jk或mod_proxy。

所以简短的回答是,如果你使用Apache作为负载均衡器,那么你必须使用mod_jk(或mod_proxy)。如果您使用其他负载均衡器,则无法使用mod_jk。

另请参阅Tomcat load balancer solutions

答案 1 :(得分:1)

mod_jk在apache httpd服务器或其他服务器内运行,它是用本机代码编写的。以下是一些可行的配置。

  1. 带有mod_jk的Apache httpd或IIS负载平衡对tomcat服务器的请求
  2. 可以使用具有反向代理支持且具有负载平衡功能的Web服务器
  3. 可以使用专用的负载均衡器产品
  4. 对于负载平衡,您需要确保确定是否需要粘贴会话路由。

    此外,您不需要配置tomcat集群会话管理器以配置和使用负载平衡。

    我相当肯定tomcat本身的java部分没有内置的负载均衡器,它希望用户使用上述选项之一。