1. 程式人生 > >負載均衡下 tomcat session 共享

負載均衡下 tomcat session 共享

 概述

在分散式部署的情況下,每臺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共享。