使用mod_jk配置单Apache对接多组Tomcat时JkWorkersFile重复报错如何解决
报错核心原因:JkWorkersFile属于mod_jk的全局配置指令,同一Apache实例仅允许声明一次,多份mod_jk配置文件重复定义该参数会触发冲突报错
修复方案(无需修改原有已生效的业务配置)
1. 合并worker节点配置
删除你新增的独立workers.properties文件,将新增2台Tomcat对应的worker配置追加到原有workers.properties文件中即可,注意worker命名不能和原有配置重名,示例追加配置如下:
# 原有配置全部保持不变,仅在末尾追加以下内容 # 注意把原有worker.list的配置值后追加上app2_lb,多个值用英文逗号分隔 worker.app2_1.port=8009 worker.app2_1.host=第一台新Tomcat的内网IP worker.app2_1.type=ajp13 worker.app2_2.port=8009 worker.app2_2.host=第二台新Tomcat的内网IP worker.app2_2.type=ajp13 worker.app2_lb.type=lb worker.app2_lb.balance_workers=app2_1,app2_2 worker.app2_lb.sticky_session=1
2. 删除重复的mod_jk全局配置
删除你新增的第二份modjk.conf配置文件,原有的mod_jk.conf保持不变即可,mod_jk的全局配置(worker文件加载、日志参数、连接超时参数等)仅需一份生效。
3. 配置新增应用的独立虚拟主机
你新增的独立vhost配置文件可以保留,仅需要在该vhost配置内指定对应转发的worker即可,示例配置如下:
<VirtualHost *:80> ServerName 新应用的访问域名 DocumentRoot 新应用的站点根目录(如果有静态资源需要Apache处理可以配置) # 所有请求转发到新增的app2负载均衡worker JkMount /* app2_lb # 其他自定义日志、访问权限等配置保持你的原有设置即可 </VirtualHost>
4. 验证配置并重启服务
- 先执行
apachectl configtest验证配置语法,返回Syntax OK后再执行重启操作 - 根据你的系统版本选择对应的Apache重启命令,比如CentOS系用
systemctl restart httpd,Debian/Ubuntu系用systemctl restart apache2
补充说明:mod_jk的全局配置仅需声明一次,所有虚拟主机可以通过JkMount指令独立选择要绑定的worker节点,即可实现单台Apache对接多组承载不同应用的Tomcat集群,不需要拆分多份全局配置文件。
内容的提问来源于stack exchange,提问作者Vamsi
相关产品推荐
相关产品推荐

