負載均衡下 tomcat session 共享
阿新 • • 發佈:2018-12-29
概述
在分散式部署的情況下,每臺tomcat 都會有自己的session ,這樣如果 使用者A 在tomcat1 下登入,在tomcat2 下並沒有session資訊。如果
tomcat1宕機,tomcat2 將會變成非登入狀態。可以將tomcat的session資訊放到 redis上,通過redis統一管理,因為 tomcat1.tomcat2 都在
同一個域名下面,那麼即使tomcat1宕機,tomcat 2 還是可以保持登入狀態。
部署步驟
1.使用 nginx 配置好負載均衡。
部署兩個tomcat,版本為 tomcat8.5
2.將 以下幾個 jar包放到 tomcat的lib目錄下。
3.在tomcat 的 conf 目錄下
編輯 context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" /> </Context>
host port 是 redis 的埠。
4.測試
在tomcat A
ROOT編寫一個測試session.jsp 檔案
A
<%
out.println( session.getId());
%>
在tomatB ROOT 編寫session.jsp
內容如下:
B
<%
out.println( session.getId());
%>
測試效果:
可以看到在兩個伺服器下 他們的sessionid 是一致的,也就是實現了 通過 redis實現session共享。