tomcat集群session復(fù)制問題

問題未結(jié)

目的

將目前采用ip hash負(fù)載集群改為session復(fù)制的集群,實(shí)現(xiàn)用戶登錄訪問不受節(jié)點(diǎn)重啟影響。

簡述

網(wǎng)上搜索到的關(guān)于session復(fù)制的文章資料基本都是搭建,沒有關(guān)于恢復(fù)驗(yàn)證的介紹。目前實(shí)驗(yàn)方案也卡在tomcat集群節(jié)點(diǎn)重啟情況下的session未復(fù)制問題。另外從redis中讀取key值的內(nèi)容以及和開發(fā)討論有關(guān)用戶信息保存在哪里,也確認(rèn)是保存在session中,目前從日志中也沒有發(fā)現(xiàn)可以與session關(guān)聯(lián)的異常信息。

方案1:tomcat cluster

基于tomcat自有的tomcat集群,session在各個(gè)server之間保持同步復(fù)制。
配置要點(diǎn):

# tomcat的server.xml配置增加
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">

# 應(yīng)用包內(nèi)的web.xml增加
<distributable/>

實(shí)驗(yàn)現(xiàn)象:

- 通過nginx負(fù)載訪問應(yīng)用時(shí),會發(fā)現(xiàn)兩個(gè)tomcat日志均在刷新,同時(shí)nginx日志的upstream也在兩個(gè)tomcat來回變化。
- 用戶登錄后,狀態(tài)始終保持。
- 后臺隨機(jī)停止一個(gè)tomcat,此時(shí)持續(xù)刷新用戶狀態(tài)仍然保持登錄狀態(tài)
- 再次啟動(dòng)該tomcat后,反復(fù)刷新點(diǎn)擊頁面會有一定幾率出現(xiàn)需要登錄的頁面, 說明之后啟動(dòng)的tomcat session信息不存在。 

方案2: tomcat redis

配置要點(diǎn):

# 搭建redis server

# tomcat/lib下載三個(gè)相關(guān)的包:
  tomcat-redis-session-manager-7.jar
  commons-pool2-2.2.jar
  jedis-2.5.2.jar

# conf/context.xml 增加redissession配置
  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
 host="192.168.100.202"
 port="7710"
 database="0"
 maxInactiveInterval="60" />

實(shí)驗(yàn)現(xiàn)象:

- 現(xiàn)象同之前方案相同。
- 終端連接redis,有sessionID為key的鍵,查看其值大多數(shù)亂碼,但從個(gè)別可讀字符應(yīng)該是包含了當(dāng)前用戶信息的各種字段。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容