我使用apache作为LB进行粘性会话处理(使用2个tomcats作为平衡器成员)。
以下是配置。我在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&amp;反之亦然?
答案 0 :(得分:1)
使用&#34;粘性会话&#34;只是一种机制,可以确保在可能使用多个节点时,同一会话的所有请求都转到同一节点。如果您想要会话故障转移,则需要群集。
有很多关于如何使用Tomcat进行群集的指南。关于集群如何工作以及如何配置它的背景,还有关于Tomcat's Presentations Page的几个演示文稿。
请注意,您可能需要对应用程序进行一些更改才能使群集正常工作。