常用保持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保持并测试:

nginx.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均操作)




   port="6379"                 
   paassword="tomcat"           
   database="0"                
   maxInactiveInterval="60"    
/>

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会话保持?

nginx+tomcat集群+redis(memcache)session共享!_第1张图片

nginx+tomcat集群+redis(memcache)session共享!_第2张图片


可以看到虽然Server从TomcatA变为TomcatB,但session的创建时间没有变化,这就完成了session共享。