linux下分布式项目基于tomcat8,redis的session共享
最近测试突然找我提了一个线上项目的超级历史遗留问题。简单看了一下,是一个用户注册发送验证码并且验证验证码的业务流程。判断是因为nginx集群中的多个tomcat服务没有共享session,当app一个注册请求是再A服务拿到的验证码,而验证的请求去到了B服务,则验证失败。
方案:
此方案对应tomcat-8.5.30,redis应用阿里云实例,jdk没有影响(使用了jdk1.7.0_79,jdk1.8.0_65两个版本)。
下载相关jar包及配置文件
开源项目https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/tag/2.0.3
点击下载
解压后
将lib文件夹的jar包复制到tomcat的lib中,conf文件夹的redis-data-cache.properties文件按需配置并拷贝到tomcat的conf中。
再将代码
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />加入tomcat的conf---->context.xml中
==========================================================
整个过程中遇到的问题都可以根据tomcat启动日志进行解决,测试过程省略。