后台:在我的应用程序中,我使用 ServiceMix 实例来提供HTTP请求。为了平衡这些,我们想出(根据一些要求)我们需要使用Tomcat。
问题:我认为应该说tomcat内置了自己的http服务器,Tomcat和mod_jk(没有Apache Http Server)可以用作负载均衡器吗?
我的阅读:我阅读了一些Tomcat domcumentation,如Tomcat Clustering doc ,Tomcat JK load balancer(这不太有帮助)
所以我想知道甚至可以仅使用Tomcat和mod_jk来实现负载平衡!!
感谢任何帮助。
答案 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。
答案 1 :(得分:1)
mod_jk在apache httpd服务器或其他服务器内运行,它是用本机代码编写的。以下是一些可行的配置。
对于负载平衡,您需要确保确定是否需要粘贴会话路由。
此外,您不需要配置tomcat集群会话管理器以配置和使用负载平衡。
我相当肯定tomcat本身的java部分没有内置的负载均衡器,它希望用户使用上述选项之一。