使用redis配置tomcat共享sessionjava
分佈式web server集羣部署後須要實現session共享,針對 tomcat 服務器的實現方案多種多樣, 好比 tomcat cluster session 廣播、nginx IP hash策略、nginx sticky module等方案, 本文主要介紹了使用 redis 服務器進行 session 統一存儲管理的共享方案。
修改nginx conf配置文件加入nginx
upstream tomcat { server 200.10.10.67:8110; server 200.10.10.67:8120; server 200.10.10.44:8110; server 200.10.10.66:8110; }
配置 相應的server或者 location地址到 http://tomcatgit
添加redis session集羣依賴的jar包到 TOMCAT_BASE/lib 目錄下github
修改 TOMCAT_BASE/conf 目錄下的 context.xml 文件web
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" sessionPersistPolicies="PERSIST_POLICY_1,PERSIST_POLICY_2,.." sentinelMaster="SentinelMasterName" sentinels="sentinel-host-1:port,sentinel-host-2:port,.."/>
屬性解釋:redis
sessionPersistPolicies session保存策略,除了默認的策略還能夠選擇的策略有:數據庫
[SAVE_ON_CHANGE]:每次 session.setAttribute() 、 session.removeAttribute() 觸發都會保存. 注意:此功能沒法檢測已經存在redis的特定屬性的變化, 權衡:這種策略會略微下降會話的性能,任何改變都會保存到redis中. [ALWAYS_SAVE_AFTER_REQUEST]: 每個request請求後都強制保存,不管是否檢測到變化. 注意:對於更改一個已經存儲在redis中的會話屬性,該選項特別有用. 權衡:若是不是全部的request請求都要求改變會話屬性的話不推薦使用,由於會增長併發競爭的狀況。
jmxNamePrefix
* ****tomcat
重啓tomcat,session存儲便可生效服務器