方法一:通过修改tomcat配置文件实现
缺点:当节点太多,tomcat集群之间session传递会影响性能
五台为分界点
通过此方法配置的集群,session信息将会被自动复制到各个节点
在Server.xml中,找到被注释<Cluster/>节点,修改为如下:
channelSendOptions="8">
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
bind="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
address="auto"
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
2、修改web.xml
在web.xml中,标志为 <distributable/>
session
方法二:基于Cookie的Session共享
这 个方案我们可能比较陌生,但它在大型网站中还是比较普遍被使用。原理是将全站用户的Session信息加密、序列化后以Cookie的方式,统一种植在根 域名下(如:.host.com),利用浏览器访问该根域名下的所有二级域名站点时,会传递与之域名对应的所有Cookie内容的特性,从而实现用户的 Cookie化Session 在多服务间的共享访问。
这 个方案的优点无需额外的服务器资源;缺点是由于受http协议头信心长度的限制,仅能够存储小部分的用户信息,同时Cookie化的 Session内容需要进行安全加解密(如:采用DES、RSA等进行明文加解密;再由MD5、SHA-1等算法进行防伪认证),另外它也会占用一定的带 宽资源,因为浏览器会在请求当前域名下任何资源时将本地Cookie附加在http头中传递到服务器。
方法三:基于缓存(redis memcached)
以上两行配置有顺序