2017-05-22 100 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上還有幾篇關於如何進行集羣工作以及如何配置它的背景介紹。

請注意,您可能需要對應用程序進行一些更改才能使羣集正常工作。