我已经使用 mod_jk 设置了基本的 Apache (2.2.x) 和 Tomcat (6.0.x),以便使用 worker.properties 文件进行负载平衡。初步测试似乎表明这种方法效果相对较好,而且设置起来相当容易。
但是,设置起来如此简单,这让我有点担心。我们正在处理使用同一 Web 应用程序(部署在 2 或 3 个 Tomcat 实例上)的 100 - 300 个并发用户。我进行了一些 Google 搜索,并在这里查看了一下,似乎有多种方法可以实现这一点(这里的一个示例使用了样式 URL balancer://
,这是我在 Apache 配置中从未见过的)。例如,我问自己的一个问题是 mod_jk 上的负载检测到底有多可靠(繁忙度、会话、请求等)。
根据您的经验,这种设置在实际场景中是否可靠?有没有关于改进、陷阱或有趣的文献/文章的建议?
我以前曾使用过 Apache,但绝对算不上专家。
提前致谢。
答案1
apache mod_proxy_balancer 使用“balancer://”,可能与 mod_proxy_ajp 一起使用,它是除 mod_jk 之外将 apache 连接到 tomcat ajp 的另一种方法。
我无法告诉你很多有关负载检测可靠性的信息,但我从我的经验中学到了这一点:
- 仔细阅读mod_jk指令手册
- 检查超时参数,这非常重要。默认无限的“reply_timeout”非常糟糕:如果 tomcat 死机,apache 将保持线程繁忙,您可能会被淹没。
- 阅读 mod_jk 日志以查找错误
- 让 apache 使用 JkUnMount 指令直接处理静态内容,从而只向 tomcat 提供所需的请求。
- 如果可能的话,使用 apache mod_cache
- 使用 mod_jk 监视页面来检查连接器上发生的情况。
关于mod_jk/proxy-ajp的一篇文章:http://thoughts.contegix.com/2009/02/02/mod-proxy-ajp-versus-mod-jk-round-1/