1. 程式人生 > >nginx+tomcat集群+redis(memcache)session共享!

nginx+tomcat集群+redis(memcache)session共享!

coo 1.7 memcache 會話 tomcat7 -- pre 創建 local

常用保持session的方式:

1、一些代理(比如nginxIP_hash)

1、使用數據庫來存儲Session

2、使用Cookie來存儲Session

3、使用Redis來存儲Sesssion(memcache也可以)

……

環境:

192.168.1.220 nginx centos6.6 端口:80

版本:1.9.2

192.168.1.224 tomcatA centos6.6 端口:8080

192.168.1.225 tomcatB centos6.6 端口:8090

版本:Jdk:1.7.0_75 Tomcat:7.0.54

192.168.1.223 redis 3.0.5

端口:6379


配置session保持並測試:

1234567891011121314nginx.conf配置:upstream www.tomcatcluster.com { zone myapp1 64k; server 192.168.1.224:8080 weight=1 max_fails=2fail_timeout=30s; server 192.168.1.218:8090 weight=1 max_fails=2fail_timeout=30s;}server { listen 80 default; server_name www.tomcat.com;
location / { proxy_pass http://www.tomcatcluster.com; }}


TomcatA:TomcatB

會話保持:

編輯tomcat配置文件context.xml(TomcatA和TomcatB均操作)

1234567891011<Context><Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/><ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.1.223" <!-- Redis地址 --> port="6379" <!-- Redis端口 --> paassword="tomcat" <!-- Redis密碼 --> database="0" <!-- 存儲Session的Redis庫編號 --> maxInactiveInterval="60" <!-- Session失效的間隔(秒) -->/></Context>mv commons-pool2-2.2.jar jedis-2.7.2.jar tomcat-redis-session-manage-tomcat7.jar /usr/local/tomcat-7.0.54/lib/

如何測試session會話保持?

技術分享圖片

技術分享圖片


可以看到雖然Server從TomcatA變為TomcatB,但session的創建時間沒有變化,這就完成了session共享。


nginx+tomcat集群+redis(memcache)session共享!