天天看點

jboss eap 6.3 叢集(cluster)-Session 複制(Replication)

解決的辦法簡單到讓人不敢相信,在app的web.xml中加一行 <distributable /> 即可(前提:jboss cluster是使用mod_cluster實作的),有了這個節點後,向某台server寫入session時,session會自動複制到其它server node。

下面來具體驗證一下:

網絡環境:

jboss eap 6.3 叢集(cluster)-Session 複制(Replication)

如上圖,有二台機器:172.21.129.181(Master Server & Apacha Server)、172.21.129.128(Slave Server)

User所在的計算機IP為: 172.21.129.57 (圖中未标出)

Sample Application:

為了驗證,我們建一個最簡單的spring mvc web應用

Controller代碼如下:

write.jsp:(寫入session)

read.jsp:(顯示session)

準備就緒,依次以domain模式啟動master server、slave server上的jboss,最後啟動apache server。

然後通路:

http://172.21.129.181/ModClusterSample/session-write.do 寫入session

繼續通路:

http://172.21.129.181/ModClusterSample/session-read.do 讀取session

jboss eap 6.3 叢集(cluster)-Session 複制(Replication)

從輸出的幾個IP看,本次請求apache轉發到了 172.21.129.128上(即:slave Server),user用戶端的IP為 172.21.129.57,而apache server的IP為172.21.129.181

另外第一行表明正确讀取到了session值:sample value

這時進入master server的jboss控制台,将slave master上的jboss server給stop掉

jboss eap 6.3 叢集(cluster)-Session 複制(Replication)

再次重新整理user機器上的http://172.21.129.181/ModClusterSample/session-read.do

jboss eap 6.3 叢集(cluster)-Session 複制(Replication)

可以看到,因為slave server上的jboss server已經被停掉了,是以本次http請求被轉發到了172.21.129.181上(即master server),但是session值仍然能正常輸出,說明session值在寫入的同時,确實已經被複制到二台jboss server上了,session replication驗證成功!