2013-10-18 48 views
3

我們正面臨着一個問題,與負載平衡器和粘性會話會話已失效在JBOSS羣集環境中的負載均衡和粘性會話

問題描述

1)此問題發生部署在JBOSS羣集環境中Struts應用程序在具有2頁,register1.do和register2.do頁

2)當上註冊URL用戶點擊,https://ourwebsite.com/register1.do

兩個GET請求的用戶註冊功能由

GET register1.do(獲取第一註冊頁面,並設置在會話幾個值)

GET captcha.do(這將加載captcha圖像上register1.do被示出)

3)有時會發生什麼是GET請求register1.do設置一個JSESSIONID cookie和GET請求captcha.do over寫 JSESSIONID cookie由第一個請求設置。這會導致第二個註冊頁面出現問題,因爲它會獲取會話中存儲的一些值,並且會話被captcha覆蓋,所以無法獲取值。 見下圖

enter image description here

4)這種情況不會發生每一次,一旦出現此問題,如果我們回到register1.do頁面刷新(F5)/硬刷新(按Ctrl + F5)然後GET請求captcha.do不會超過寫入JSESSIONID cookie和用戶註冊工作正常。

此外,這種情況只發生在集羣環境中,在單JBOSS環境下工作正常。

  • 任何人都可以請幫助我確定什麼可能是問題 在這裏?

  • 爲什麼在我們進行頁面刷新時會話不會被寫入?

+1

我有一個類似的問題,使用mod_cluster從Apache到兩個JBoss服務器的負載平衡。看起來,mod_cluster不尊重會話粘性,我還沒有找到解決方案來解決它。你的技術堆棧是什麼樣的? – Welsh

+0

我對使用mod_cluster 1.3.1的JBoss EAP 7集羣也有類似的問題。我分享鏈接到我的問題:[鏈接](http://stackoverflow.com/questions/43454068/load-balancing-cluster-not-working-with-apache-http-server-2-4-6-and- jboss-eap-7) –

回答

1

更新你的apache mod_cluster二進制文件mod_cluster 1.2.6.Final它們可here

這解決了它對我來說,這是每次刷新後跳轉服務器。希望有幫助。

+0

對我來說,大部分時間並不會失敗。發生這種情況時,我們打開一個新的瀏覽器實例並嘗試註冊,如果我們按F5/Ctrl + F5(一旦發生錯誤),那麼它在相同的瀏覽器實例上正常工作,並且錯誤不再出現。 我們發現的一種模式是每當JSESSSION id進入url時,它就會失敗。 – manurajhada

+0

這是一箇舊的bug,當前的[mod_cluster 1.3.1.Final](https://developer.jboss.org/wiki/ModclusterVersion131FinalReleased)在url中處理JSESSIONID。 –

0

我也遇到了與jboss eap 6.1相同的問題,並且在負載均衡器中,我將使用mod_cluster配置我將服務器每個會話的算法更改爲每個會話的入口和粘性會話正常運行良好。瞭解每個會話的每個會話和服務器的條目。

Entry-per-Session表示設備在源IP打開新會話(唯一源端口)時創建額外的客戶端表條目。這使得單元能夠更準確地跟蹤會話的數量,但它的行爲是繼續將所有來自客戶端的源IP的流量發送到同一臺服務器。

在服務器每會話模式下,設備以相同的方式跟蹤唯一源端口,但是當客戶端打開新會話時,設備會爲新會話做出新的負載平衡決定。這樣,來自同一個客戶端IP的多個會話就可以在所有服務器中「噴灑」,而不會被卡在單臺服務器上。

相關問題