我的任务是通过 mod_jk 在 Apache Tomcat 服务器实例之间对网络流量进行负载均衡。
我已经配置了负载平衡,但它没有为同一个请求保留相同的会话,它会重定向到另一个Tomcat服务器实例。
答案 0 :(得分:1)
在workers.properties中,将sticky_session选项设置为1:
worker.list=balancer,lbstats
#node1
worker.node1.type=ajp13
worker.node1.host=127.0.0.1
worker.node1.port=8009
worker.node1.lbfactor=10
#node2
...
#lb config
worker.balancer.type=lb
worker.balancer.sticky_session=1
worker.balancer.balance_workers=node1,node2
#lb status information (optional)
worker.lbstats.type=status
<强>更新强>
一个原因可能是会话在请求期间丢失。确保在server.xml中的engine元素中设置了jvmRoute属性:
<Engine jvmRoute="node1" defaultHost="localhost" name="Catalina">
该名称必须与workers.properites中的节点名称匹配(参见上文)。此名称将附加到您的会话ID。请确保在请求期间不会更改。
此外,如上所示定义状态工作者,并将其映射到httpd.conf文件中的URL:
JkMount /modjkstatus lbstats
之后访问http://yourdomain.xyz/modjkstatus以查看更多群集和lb信息。