【发布时间】:2014-09-21 20:43:08
【问题描述】:
我的任务是通过 mod_jk 对 Apache Tomcat 服务器实例之间的网络流量进行负载平衡。
我已经配置了负载平衡,但是它不会为相同的请求保留相同的会话,它会重定向到另一个 Tomcat 服务器实例。
【问题讨论】:
标签: apache tomcat ubuntu load-balancing mod-jk
我的任务是通过 mod_jk 对 Apache Tomcat 服务器实例之间的网络流量进行负载平衡。
我已经配置了负载平衡,但是它不会为相同的请求保留相同的会话,它会重定向到另一个 Tomcat 服务器实例。
【问题讨论】:
标签: apache tomcat ubuntu load-balancing mod-jk
在您的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 的引擎元素中设置了 jvmRoute 属性:
<Engine jvmRoute="node1" defaultHost="localhost" name="Catalina">
名称必须与workers.properites 中的节点名称匹配(见上文)。此名称将附加到您的会话 ID。确保它在请求期间不会更改。
此外,如上所示定义一个状态工作者,并将其映射到您的 httpd.conf 文件中的 url:
JkMount /modjkstatus lbstats
之后访问 http://yourdomain.xyz/modjkstatus 以查看更多集群和 lb 信息。
【讨论】: