我的任务是通过mod_jk平衡Apache Tomcat服务器实例之间的Web流量。

我已经配置了负载平衡,但是它不会为相同的请求保留相同的会话,而是将其重定向到另一个Tomcat服务器实例。

最佳答案

在worker.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">


该名称必须与worker.properites中的节点名称匹配(请参见上文)。该名称将附加到您的会话ID中。确保在请求期间它没有改变。

此外,如上所述定义一个状态工作器,并将其映射到您的httpd.conf文件中的url:

JkMount /modjkstatus    lbstats


之后,访问http://yourdomain.xyz/modjkstatus以查看更多的群集和磅信息。

07-27 18:36