要使用apache作为具有粘性会话的负载平衡器,需要基于粘性会话的负载平衡

要使用apache作为具有粘性会话的负载平衡器,需要基于粘性会话的负载平衡,apache,tomcat,mod-proxy,mod-proxy-balancer,Apache,Tomcat,Mod Proxy,Mod Proxy Balancer,我使用apache作为LB,使用2个Tomcat作为平衡器成员进行粘性会话处理 下面是配置。由我在apache级别完成- <Proxy balancer://mycluster> (...) ProxySet stickysession=JSESSIONID BalancerMember http://{ip/hostname of tomcat1 backed:port} route=tomcat1 BalancerMember http://{ip

我使用apache作为LB,使用2个Tomcat作为平衡器成员进行粘性会话处理

下面是配置。由我在apache级别完成-

<Proxy balancer://mycluster>
    (...)
    ProxySet stickysession=JSESSIONID
    BalancerMember http://{ip/hostname of tomcat1 backed:port} route=tomcat1
    BalancerMember http://{ip/hostname of tomcat2 backed:port} route=tomcat2
</Proxy>

ProxyPass        /     “balancer://mycluster”
PorxyPassReverse /     “balancer://mycluster”
在tomcat级别定义jvm路由-

(...)
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">         ##where the jvmroute should be the route value set at apache config.
(...)
tomcat 2也定义了同样的功能

(...)
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">         ##where the jvmroute should be the route value set at apache config.
    (...)
一切正常,但此设置的主要缺点是,如果tomcat1宕机,则粘贴到tomcat1的会话也会停止,并且不会路由到tomcat2


有没有办法也将粘性会话复制到tomcat2,或者简单地说,如果tomcat1死亡,则会话将被转移到tomcat2,反之亦然?

使用粘性会话只是一种机制,可以确保在可能使用多个节点时,同一会话的所有请求都会转移到同一节点。如果希望会话故障转移,则需要集群

关于如何使用Tomcat进行集群,有很多指南。此外,还有一些关于集群如何工作以及如何配置集群的演示


请注意,为了使群集正常工作,您可能必须对应用程序进行一些更改。

我强烈建议您使用该演示文稿,它涵盖了所有负载平衡、反向代理、会话群集+故障切换,并提供了故障排除指南。非常感谢您的回答:@AnkurVaish如果您同意这是正确的答案,请接受答案。@ChristopherSchultz,我没有任何选择,因为在“接受”中,你能给我介绍一下吗?@AnkurVaish最好问一个新问题,或者加入Tomcat并在那里寻求帮助。