奔跑的阳光 2017-03-16 02:41 采纳率: 0%
浏览 479

请教高手!Apache做tomcat集群不能复制session

Apache是2.4,win7-x64,两个tomcat7,启动两个tomcat7单独访问两个tomcat的端口能看到session成功的复制了,但是加上Apache之后,通过Apache访问就不行了,每刷新一次就变化一次sessionID,所以判定问题绝对在Apache,求高手。。Apache的配置如下图:
_图片说明图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 14:30
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能是因为Apache没有正确设置balancer来处理多个Tomcat实例之间的session复制。下面是一些建议和步骤,帮助你解决这个问题:

    步骤 1:检查Tomcat配置

    确保你的Tomcat配置文件中,每个实例都有正确的配置,以便它们能够识别到其他实例。

    示例:

    <Connector port="80" protocol="HTTP/1.1"
                 connectionTimeout="20000"
                 redirectPort="8443">
        <ConnectionTimeout>20000</ConnectionTimeout>
        <RedirectPort>8443</RedirectPort>
        <ListenAddress>0.0.0.0</ListenAddress>
    </Connector>
    

    步骤 2:修改Apache配置

    首先,你需要删除或修改Apache配置中的BalancerMember部分,以匹配你的Tomcat实例。然后,根据你的需求调整ProxySet配置,例如添加sticky-session属性以实现会话粘性,或者使用no-failover属性防止失败转移。

    示例:

    <Proxy balancer://TestCluster>
        #...
        <ProxySet sticky-session="JSESSIONID" failover="Off" />
        <ProxySet sticky-session="JSESSIONID" failover="On" />
    </Proxy>
    

    这里,我们添加了一个新的sticky-session属性,并设置了不同的值。你可以选择一个组合,使得两个Tomcat实例共享相同的会话ID。

    步骤 3:测试

    运行Apache并重新启动,然后尝试访问每个Tomcat实例的不同URL。你应该看到会话ID的变化。

    注意事项

    • 确保你的Tomcat实例都运行在同一网络上,否则可能会出现连接问题。
    • 如果上述方法仍然无法解决问题,请提供更多的关于你的环境信息,以便进行更深入的诊断。
    评论

报告相同问题?