1. 程式人生 > >基於redis 的tomcat session 同步

基於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.jartomcat預設是沒有這些包的,從下載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共享