使用Tomcat+Redis来实现集群部署中的Session共享问题
来源:互联网 发布:同业拆借 知乎 编辑:程序博客网 时间:2024/06/05 20:06
一、工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案:
1、使用数据库来存储Session
2、使用Cookie来存储Session
3、使用Redis来存储Sesssion
二、本文中主要讲一下第3种方案,也就是使用Redis来存储Session,Github中已经有该开源组件(tomcat-redis-session-manager),下面讲一下配置的步骤
1、配置tomcat配置文件context.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" <!-- Redis地址 --> port="6379" <!-- Redis端口 --> password="123456" <!-- Redis密码 --> database="0" <!-- 存储Session的Redis库编号 --> maxInactiveInterval="60" <!-- Session失效的间隔(秒) --> />
注:
1)Manager节点中的className属性为必选项,其它均为可选项
2)maxInactiveInterval设置不生效,暂时找不到原因,在部署中发现Session失效的间隔一直都是读取tomcat/conf/web.xml中的session-config节点中配置的session-timeout属性值,且都是以秒为单位(如有知道问题原因所在的,麻烦告诉我一声,非常感谢)
2、添加相关的jar包到tomcat/lib目录下,需要的jar包如下:
commons-pool2-2.2.jarjedis-2.5.2.jartomcat-redis-session-manage-tomcat7.jar
注:
1)我将这些jar包上传到了百度云盘中,有需要的可以点击下载:http://pan.baidu.com/s/1bokMOVH
3、在nginx中配置负载均衡,配置文件为nginx.conf
http { upstream myServer { server 192.168.1.2:8080; server 192.168.1.3:8080; } server { listen 80; server_name www.kolbe.cn; location / { proxy_pass http://myServer; }}
配置完后,访问www.kolbe.cn的请求都将被转发到192.168.1.2:8080以及192.168.1.3:8080中去,可以在页面中打印一下Session Id验证一下
Session Id : <%= request.getSession().getId() %>
当然,也可以到Redis库中直接查看
注:
1)GitHub中该开源组件(tomcat-redis-session-manager)的主页:https://github.com/jcoleman/tomcat-redis-session-manager
2)该组件目前不支持Tomcat8,我用的是Tomcat 7.0.68版本
3)在程序中将对象放到Redis里时,该对象必须实现java.io.Serializable接口,否则将报错,如果对象中有其它对象的引用,该引用对象也需实现java.io.Serializable接口,所以在使用request.getSession().setAttribute()方法时,一定要注意一下这一个细节
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
- redis实现tomcat集群session共享
- redis集群 实现 tomcat session 共享
- spring Session + Redis集群 + 哨兵部署下实现Session共享
- 用Redis存储Tomcat集群的Session实现session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
- 使用Memcached实现Tomcat集群Session共享
- Tomcat集群之使用Redis来存储集群Session
- Nginx+Tomcat+Memcached 实现集群部署时Session共享
- linux下实现redis共享session的tomcat集群
- 用Redis存储Tomcat集群实现Session共享
- nginx+tomcat7+redis实现tomcat集群session共享
- nginx+tomcat+redis/Memcached实现集群 session共享
- 关于编写android程序遇到的问题
- 在 React.js 中使用 ES6+
- C字符串
- Exception thrown in catch and finally clause
- PHP单引号与双引号区别记录
- 使用Tomcat+Redis来实现集群部署中的Session共享问题
- 降雷皇 【NOIP2017提高组模拟12.10】
- poj_1200_Crazy Search_hash
- 三种设置session的失效时间
- Ubuntu等Linux系统显卡性能测试软件 Unigine 3D
- Android下的帧动画
- 172.16.82.0/25的含义,IP段,掩码
- web中常见的bug调试总结
- gabor变换人脸识别的python实现,att_faces数据集平均识别率99%