2011-04-01 37 views
1

我目前有兩個的Tomcat 6.0.32實例(Tomcat1Tomcat2)在同一個VPS運行組成一個非常基本的集羣。我通過Apache使用mod_proxy_ajp和mod_proxy_balancer作爲負載均衡器(在同一個VPS上)。 我們使用基本表單身份驗證(通過j_security_check)爲用戶創建經過身份驗證的會話。的Tomcat 6集羣 - 驗證會話複製

負載均衡器運行正常,未成功的會話正在兩個實例之間成功複製。但是,我無法在每個實例之間進行身份驗證會話替換。

我使用了一個名爲session.jsp的非常基本的JSP(基於JPS模板http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html)來測試會話以查看它是否是新會話並打印出JSESSIONID。我在保護區域內有一個JSP副本,在保護區域外有一個副本。

我已經運行下面的測試:

測試1)
我訪問session.jsp應用程序的保護區以外的Tomcat1,我記下了JSESSIONID,並與負載平衡器確認即Tomcat1處理了該請求。然後我關閉了Tomcat1並刷新頁面。該請求現在由Tomcat2處理(由負載平衡器確認)。當頁面完成加載時,我看到我的原始JSESSIONID和我的會話存活下來。

測試2)
我的一個應用的保護區域內訪問session.jsp上Tomcat1。這會提示我登錄。登錄後,我將發送到session.jsp並記下我的JSESSIONID,並使用負載均衡器確認,比Tomcat1處理了請求。然後我關閉了Tomcat1並刷新頁面。該請求現在由Tomcat2處理(由負載平衡器確認)。當頁面加載時,我檢查我的cookie。我現在有一個新的JSESSIONID,我再次提示登錄。

到目前爲止,我認爲已認證的會話不會像未經身份驗證的會話一樣被複制。這是一個很好的理由還是它指向配置問題?

回答

0

你還沒有上sticky_session模式下運行,並且可與worker.loadbalancer.sticky_session = 1

而且bettter檢查啓用:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html

+0

這是我的理解是worker.loadbalancer是mod_jk的設置。由於我們使用mod_proxy,我不相信這是相關的。 粘性會話在mod_proxy中啓用,並且正在運行問題是在Tomcat實例之間複製已驗證的會話。 – Ross 2011-04-01 00:44:29