You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Tomcat 9搭配mod_jk负载均衡故障排查请求

问题

尝试用Tomcat 9搭配mod_jk实现负载均衡失败,相同配置和端口在Tomcat 8上能正常运行。Tomcat 9跳转对应端口时卡在连接状态,始终无法完成跳转。查看Apache 2.2的mod_jk.log和error.log未发现错误。

环境信息

  • Apache HttpServer 2.2
  • Mod_jk 1.2.40

配置文件

workers.properties

worker.instance1.type=ajp13
worker.instance1.host=127.0.0.1
worker.instance1.port=7009
worker.instance1.lbfactor=1
worker.instance1.connection_pool_timeout=600
worker.instance1.socket_timeout=300

# Instance2
worker.instance2.type=ajp13
worker.instance2.host=127.0.0.1
worker.instance2.port=6009
worker.instance2.lbfactor=1
worker.instance2.connection_pool_timeout=600
worker.instance2.socket_timeout=300

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=instance1,instance2
worker.loadbalancer.sticky_session=1

worker.list=loadbalancer,jkstatus
worker.jkstatus.type=status

端口7009对应的server.xml片段

<!-- Define an AJP 1.3 Connector on port 7009 -->
<Connector port="7009" protocol="AJP/1.3" redirectPort="8043" />
<Engine name="Catalina" defaultHost="127.0.0.1" jvmRoute="instance2">

端口6009对应的server.xml片段

<!-- Define an AJP 1.3 Connector on port 6009-->
<Connector port="6009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="127.0.0.1" jvmRoute="instance1">
解决建议
  • 检查Tomcat 9的AJP连接器密钥配置:Tomcat 9默认开启secretRequired="true",而Tomcat 8默认关闭。若mod_jk未配置对应密钥,会导致连接失败。可在Tomcat的AJP Connector标签临时添加secretRequired="false"测试,或配置secret="自定义密钥",同时在workers.properties中给对应worker添加worker.instance1.secret=自定义密钥。
  • 升级mod_jk版本:当前使用的mod_jk 1.2.40版本较老,存在与Tomcat 9的AJP协议兼容问题,建议升级至1.2.48及以上版本。
  • 查看Tomcat 9自身日志:重点检查catalina.log和localhost.log,尤其是启动阶段和连接请求时的日志,可能存在AJP连接相关的错误信息(如密钥不匹配、协议版本冲突)。
  • 验证端口监听状态:用netstat -ano(Windows)或ss -tulpn(Linux)确认7009、6009端口确实被Tomcat 9进程监听,排除端口被占用或AJP连接器未正常启动的情况。
  • 对齐jvmRoute与worker名称:当前配置中instance1对应端口7009,但server.xml里7009的jvmRoute是instance2,6009对应instance1,虽逻辑可行但易混淆,建议调整为worker名称与jvmRoute一一对应,便于排查问题。
  • 调整mod_jk超时参数:尝试增大socket_timeout和connection_pool_timeout的值(如socket_timeout设为600),排查是否因超时时间过短导致连接中断。

内容的提问来源于stack exchange,提问作者alexkidd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 05:43:33