【问题标题】:How to Enable Sticky Sessions in tomcat loadbalancer?如何在 tomcat 负载均衡器中启用粘性会话?
【发布时间】:2014-09-21 20:43:08
【问题描述】:

我的任务是通过 mod_jkApache Tomcat 服务器实例之间的网络流量进行负载平衡。

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

【问题讨论】:

    标签: apache tomcat ubuntu load-balancing mod-jk


    【解决方案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 的引擎元素中设置了 jvmRoute 属性:

    <Engine jvmRoute="node1" defaultHost="localhost" name="Catalina">
    

    名称必须与workers.properites 中的节点名称匹配(见上文)。此名称将附加到您的会话 ID。确保它在请求期间不会更改。

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

    JkMount /modjkstatus    lbstats
    

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

    【讨论】:

    • 您好 Stefan,我已将 "worker.balancer.sticky_session" 的值设置为 1 ,但仍然无法正常工作。还有其他方法吗?
    • 嗨 Stefan,谢谢你的更新,我做了你提到的所有事情,但是如果我添加了这一行 ,tomcat服务器实例没有启动。如果我评论了那个,实例就会启动。对此有任何想法吗?
    • 该行已经存在于你的Tomcats server.xml中。您只需要添加 jvmRoute="NAME" 属性即可。
    猜你喜欢
    • 2013-04-18
    • 2021-09-06
    • 2016-02-17
    • 2017-10-22
    • 2018-09-09
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多