1

背景:在我的应用程序中,我使用ServiceMix实例来处理 HTTP 请求。为了对这些进行负载平衡,我们发现(根据某些要求)我们需要使用 Tomcat。

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

我的阅读:我阅读了一些 Tomcat 文档,例如Tomcat Clustering docTomcat JK load balancer(这不是很有帮助)

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

任何帮助表示赞赏。

4

2 回答 2

2

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

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

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

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

所以简短的回答是,如果您使用 Apache 作为负载均衡器,那么您必须使用 mod_jk(或 mod_proxy)。如果您使用另一个负载均衡器,则不能使用 mod_jk。

另请参阅Tomcat 负载均衡器解决方案

于 2012-08-01T10:30:07.453 回答
1

mod_jk 在 apache httpd 服务器或其他一些用本机代码编写的服务器内部运行,这里有一些可以使用的配置。

  1. 带有 mod_jk 负载的 Apache httpd 或 IIS 平衡对 tomcat 服务器的请求
  2. 可以使用具有反向代理支持和负载平衡功能的 Web 服务器
  3. 可以使用专用的负载均衡器产品

对于负载平衡,您需要确保确定是否需要粘性会话路由。

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

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

于 2012-08-01T08:33:15.543 回答