Tomcat Session共享解决方案

1. 背景tomcat Session 共享

有多种实现方案,在这里介绍2种,以下优缺点属个人总结。
方案1:使用 web容器本身功能,Tomcat组播
优点:配置简点,不依赖第三方存储。
缺点:广播延迟,需要Tomcat7及以上版本,需要广播端口
方案2:使用缓存实现,Redis或memcached
优点:实时性高,常用方式
缺点:需要维护第三方服务,必须保证高可用。
其他方案:
可以设置nginx或haproxy等负载方式为ip绑定,假装实现Tomcat之间的Session共享(对负载均衡要求不严)

方案1:Tomcat自带Cluster

网上比较多见不在赘述请见连接。http://blog.csdn.net/Readiay/article/details/45393435

方案2:Redis方案

1、jar下载地址:https://github.com/jcoleman/tomcat-redis-session-manager/downloads
2、将jar包放到tomcat/lib下
在这里插入图片描述
3、修改tomcat/conf/contenxt.xml配置文件,增加

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"  
host="localhost"   
port="6379"   
database="0"   
maxInactiveInterval="10800" /> 

PS:maxInactiveInterval为session过期时间,单位为秒,请项目组根据情况调整

方案3:Memcached方案

1、jar包下载:https://code.google.com/archive/p/memcached-session-manager/downloads
2、将jar包放到tomcat/lib下
Jar包下载地址可下载以下3个包
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc6-1.5.1.jar
msm-javolution-serializer-1.5.1.jar
以下2个jar包自行下载相应版本
memcached-2.5.jar
javolution-5.5.1.jar
3、修改tomcat/conf/contenxt.xml配置文件,增加

<Context reloadable="false" path="" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
memcachedNodes="n1:192.168.1.101:11211,n2:192.168.1.102:11211"  
sticky="false"  
sessionBackupAsync="false"  
lockingMode="auto"  
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory" />  
</Context> 

你可能感兴趣的:(安全相关,tomcat)