2017-05-22 86 views
0

我使用Apache作为LB粘滞会话处理(使用2个tomcats作为平衡器成员)。使用Apache作为负载平衡器与粘滞会话 - 需要基于会话粘滞负载平衡

以下是配置。通过我在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 &反之亦然?

回答

0

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

有许多关于如何使用Tomcat进行群集的指南。在Tomcat's Presentations Page上还有几篇关于如何进行集群工作以及如何配置它的背景介绍。

请注意,您可能需要对应用程序进行一些更改才能使群集正常工作。