使用Tomcat+Redis來實現叢集部署中的Session共用問題

來源:互聯網
上載者:User

標籤:max   告訴   間隔   hub   orange   gets   ble   ons   false   

一、工作中因為要使用到Tomcat叢集部署,此時就涉及到了Session共用問題,主要有三種解決方案:

1、使用資料庫來儲存Session

2、使用Cookie來儲存Session

3、使用Redis來儲存Sesssion

 

二、本文中主要講一下第3種方案,也就是使用Redis來儲存Session,Github中已經有該開源組件(tomcat-redis-session-manager),下面講一下配置的步驟

1、配置tomcat設定檔context.xml

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"     host="localhost"             <!-- Redis地址 -->    port="6379"                  <!-- Redis連接埠 -->    password="123456"            <!-- Redis密碼 -->    database="0"                 <!-- 儲存Session的Redis庫編號 -->    maxInactiveInterval="60"     <!-- Session失效的間隔(秒) -->    />

  

註:

1)Manager節點中的className屬性為必選項,其它均為可選項

2)maxInactiveInterval設定不生效,暫時找不到原因,在部署中發現Session失效的間隔一直都是讀取tomcat/conf/web.xml中的session-config節點中配置的session-timeout屬性值,且都是以秒為單位(如有知道問題原因所在的,麻煩告訴我一聲,非常感謝)

 

2、添加相關的jar包到tomcat/lib目錄下,需要的jar包如下:

commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manage-tomcat7.jar

 

 

註:

1)我將這些jar包上傳到了百度雲端硬碟中,有需要的可以點擊下載:http://pan.baidu.com/s/1bokMOVH

 

3、在nginx中配置負載平衡,設定檔為nginx.conf

http {upstream myServer {server 192.168.1.2:8080;server 192.168.1.3:8080;}server {listen 80;server_name www.kolbe.cn;location / {proxy_pass http://myServer;}}

  

 

配置完後,訪問www.kolbe.cn的請求都將被轉寄到192.168.1.2:8080以及192.168.1.3:8080中去,可以在頁面中列印一下Session Id驗證一下

Session Id : <%= request.getSession().getId() %>

當然,也可以到Redis庫中直接查看

 

註:

1)GitHub中該開源組件(tomcat-redis-session-manager)的首頁:https://github.com/jcoleman/tomcat-redis-session-manager

2)該組件目前不支援Tomcat8,我用的是Tomcat 7.0.68版本

3)在程式中將對象放到Redis裡時,該對象必須實現java.io.Serializable介面,否則將報錯,如果對象中有其它對象的引用,該引用對象也需實現java.io.Serializable介面,所以在使用request.getSession().setAttribute()方法時,一定要注意一下這一個細節

 

使用Tomcat+Redis來實現叢集部署中的Session共用問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.