在做session共享的时候一定要注意tomcat版本对于的jar包是不一样的。
1.完整的架构
基于redis存储的session方案
此体系结构中, redis master出现故障时, 通过haproxy设置redis slave为临时master, redis master重新恢复后, 再切换回去. 此方案中, redis-master 与redis-slave 是双向同步的, 解决目前redis单点问题. 这样保证了session信息在redis中的高可用。
2.个人练习
一、环境:linux环境
二、架构:
三、使用工具
redis
nginx
apache-tomcat-8.0.9
apache-tomcat-8.5.30
注:tomcat只要是8.0以上随便拿了两个
四、实现方法和步骤
方法1: apache-tomcat-8.0.9 的端口是8080
apache-tomcat-8.5.30的端口是8081
nginx配置 upstream test{
ip_hash
server localhost :8080;
server localhost :8081;
}
注:ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,所以在使用场景是有限的,一些nginx后还有分布式的就不能用这样的方式
方法2: nginx配置 upstream test{
server localhost :8080;
server localhost :8081;
}
redis 的配置 bind 6379
protected-mode on #关闭protected-mode模式
requirepass chencan # 密码
tomcat共享需要的jar包。下载路径:tomcat8-redis-session-manager.zip,
apache-tomcat-8.0.9 的端口是8080 ,apache-tomcat-8.5.30的端口是8081,把上面三个jar包放到tomcat的lib目录下,同时修改context.xml配置文件为
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost" <!--nginx的地址 -->
port="6379"
password="chencan"
database="0"
maxInactiveInterval="60"
/>
然后启动redis ,
重启nginx nginx -s reload
重启tomcat 完成
看tomcat控制台可以发现在两个tomcat来回迅播。