基於redis 的tomcat session 同步
這裡我把Redis放在/XX/下,所以在該目錄下執行下列命令:
$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz
$ tar xzf redis-3.2.1.tar.gz
$ cd redis-3.2.1
$ make
啟動
[[email protected] redis-3.2.1]# ./src/redis-server ../redis.conf
啟動報錯
解決方法
將redis配置檔案拷貝到/etc/redis/${REDISPORT}.conf
# mkdir /etc/redis
# cp /sxcoo/redis-2.8.21/redis.conf /etc/redis/6379.conf
啟動
[[email protected] redis-3.2.1]# ./src/redis-server /etc/6379.conf
在我window環境 原創連結測試
可以正常連結
但是存值出錯
經查閱資料
在redis3.2之後,redis增加了protected-mode,在這個模式下,即使註釋掉了bind 127.0.0.1,再訪問redisd時候還是報錯。
解決方法 修改redis.conf
protected-mode no
以上redis已經裝好了,
現在要做的是將tomcat的session 用redis來管理
詳細配置地址:https://github.com/izerui/tomcat-redis-session-manager
本來很簡單
1、在tomcat/lib下面新增
commons-pool2-2.2.jar
jedis-2.5.2.jar
tomcat-redis-session-manager-2.0.0.jar
2、修改conf/context.xml,新增
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost"
port="6379"
database="10"
maxInactiveInterval="60"/>
3、啟動tomcat。。但是就是不行
一臉懵逼
檢視日誌沒有發現redis相關的異常
最後仔細閱讀啟動tomcat服務的日誌發現了一個
No rules found matching 'Context/Value'.
這個異常是context配置檔案的問題。
閱讀下載的tomcat-redis-session-manager原始碼發現原始碼(tomcat-redis-session-manager)依賴了tomcat其他的包:tomcat-juli.jar而tomcat預設是沒有這些包的,從下載tomcat-juli-adapters.jar和tomcat-juli.jar兩個包,放在apache-tomcat-7.0.57\lib目錄下,同時將tomcat-juli.jar放在apache-tomcat-7.0.57\bin目錄下同時將編譯tomcat-redis-session-manager的原始碼,通過相應的依賴包common-pool2.2,jedis以及tomcat-juli.jar編譯,
並打成自己的jar包,上傳然後將這個依賴包放在apache-tomcat-7.0.57\lib目錄下,刪除網上下載的tomcat-redis-session-manager-1.2-tomcat-7.jar.
經測試 成功
接下來測試tomcat叢集負載均衡和session共享
經測試 成功
接下來測試tomcat叢集負載均衡和session共享