美文网首页
tomcat集群session复制问题

tomcat集群session复制问题

作者: jianblog | 来源:发表于2019-05-15 09:03 被阅读0次

问题未结

目的

将目前采用ip hash负载集群改为session复制的集群,实现用户登录访问不受节点重启影响。

简述

网上搜索到的关于session复制的文章资料基本都是搭建,没有关于恢复验证的介绍。目前实验方案也卡在tomcat集群节点重启情况下的session未复制问题。另外从redis中读取key值的内容以及和开发讨论有关用户信息保存在哪里,也确认是保存在session中,目前从日志中也没有发现可以与session关联的异常信息。

方案1:tomcat cluster

基于tomcat自有的tomcat集群,session在各个server之间保持同步复制。
配置要点:

# tomcat的server.xml配置增加
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">

# 应用包内的web.xml增加
<distributable/>

实验现象:

- 通过nginx负载访问应用时,会发现两个tomcat日志均在刷新,同时nginx日志的upstream也在两个tomcat来回变化。
- 用户登录后,状态始终保持。
- 后台随机停止一个tomcat,此时持续刷新用户状态仍然保持登录状态
- 再次启动该tomcat后,反复刷新点击页面会有一定几率出现需要登录的页面, 说明之后启动的tomcat session信息不存在。 

方案2: tomcat redis

配置要点:

# 搭建redis server

# tomcat/lib下载三个相关的包:
  tomcat-redis-session-manager-7.jar
  commons-pool2-2.2.jar
  jedis-2.5.2.jar

# conf/context.xml 增加redissession配置
  <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
  <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
 host="192.168.100.202"
 port="7710"
 database="0"
 maxInactiveInterval="60" />

实验现象:

- 现象同之前方案相同。
- 终端连接redis,有sessionID为key的键,查看其值大多数乱码,但从个别可读字符应该是包含了当前用户信息的各种字段。

相关文章

网友评论

      本文标题:tomcat集群session复制问题

      本文链接:https://www.haomeiwen.com/subject/yiruaqtx.html