前言
集群中實(shí)現(xiàn)session共享,是不得不解決的問題,目前主要右三種方案
- 使用數(shù)據(jù)庫來存儲(chǔ)session
- 使用cookie來存儲(chǔ)session
- 使用Redis來存儲(chǔ)session
本文主要講一下第三中方案。
準(zhǔn)備工作
- 操作系統(tǒng):windows 7/8/10
- jdk和tomcat
- Nginx 1.10
- redis 3.0(windows版本)
這里主要詳細(xì)介紹一下redis在windows下面的安裝過程。
redis安裝運(yùn)行過程
到 https://github.com/MSOpenTech/redis/releases進(jìn)行下載勒叠,因?yàn)閞edis官網(wǎng)并沒有提供windows版本的支持。github上面有開源的膏孟。下載zip版本眯分。
下載完成后解壓,打開
redis.windows.conf
柒桑,找到bind 127.0.0.1
弊决,修改為bind 0.0.0.0
(原配置默認(rèn)不準(zhǔn)遠(yuǎn)程訪問redis服務(wù)器,更改之后可以遠(yuǎn)程客戶端訪問)-
打開cmd進(jìn)入redis根目錄下面,運(yùn)行命令:
redis-server.exe redis.windows.conf
,顯示如下信息說明服務(wù)開啟成功C:\Users\shixu\Downloads\Redis-x64-3.2.100>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 3.2.100 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 7688 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' [7688] 05 Mar 16:48:21.040 # Server started, Redis version 3.2.100 [7688] 05 Mar 16:48:21.041 * DB loaded from disk: 0.000 seconds [7688] 05 Mar 16:48:21.042 * The server is now ready to accept connections on port 6379 [7688] 05 Mar 16:57:26.639 * 10 changes in 300 seconds. Saving... [7688] 05 Mar 16:57:26.651 * Background saving started by pid 12784 [7688] 05 Mar 16:57:26.851 # fork operation complete [7688] 05 Mar 16:57:26.853 * Background saving terminated with success
?
另外開啟一個(gè)客戶端(注意:運(yùn)行服務(wù)的那個(gè)命令窗口不能關(guān)閉飘诗,否則服務(wù)會(huì)關(guān)閉)与倡,在cmd下面輸入:
redis-cli.exe -h {IP} -p {port}
(實(shí)際訪問請(qǐng)將ip和port換位運(yùn)行redis服務(wù)器的ip以及端口,默認(rèn)是6379)
構(gòu)建 tomcat-redis-session-manager-master
這部分可以自己編譯昆稿,也可以直接從網(wǎng)盤下載編譯好的jar包
jar包鏈接:http://pan.baidu.com/s/1bokMOVH
下載后將這些jar包導(dǎo)入到各個(gè)tomcat下面的lib文件夾
配置tomcat配置文件context.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost" <!-- Redis服務(wù)IP地址 -->
port="6379" <!-- Redis端口 -->
password="123456" <!-- Redis密碼 -->
database="0" <!-- 存儲(chǔ)Session的Redis庫編號(hào) -->
maxInactiveInterval="60" <!-- Session失效的間隔(秒) -->
/>
注:
1)Manager節(jié)點(diǎn)中的className屬性為必選項(xiàng)纺座,其它均為可選項(xiàng)
2)maxInactiveInterval設(shè)置不生效,暫時(shí)找不到原因溉潭,在部署中發(fā)現(xiàn)Session失效的間隔一直都是讀取tomcat/conf/web.xml中的session-config節(jié)點(diǎn)中配置的session-timeout屬性值净响,且都是以秒為單位(如有知道問題原因所在的,麻煩告訴我一聲喳瓣,非常感謝)
Nginx tomcat的負(fù)載均衡配置别惦,這個(gè)網(wǎng)上比較多,這里不詳細(xì)說了夫椭。