多台tomcat服务的session共享 memcached与redis
由于tomcat的并发数瓶颈问题,可以说使用tomcat的web应用,几乎都存在session不同步问题。
借鉴网上的资料,我也找时间实验一把。
文中涉及的软件下载和安装,一一略过,想必大家也没必要看。
注:本文不对memcached和redis做任何口水讨论,望各个网友自行问谷歌和度娘。
(个人愚见,它们作为一个软件,能获得各自众多支持者,想必它们自然有各自的优点,重点还是从实际需要出发,选择合适自己的东东。)
一、nginx+tomcat+memcached (依赖包下载)
1.memcached配置:(v1.4.13)
节点1(192.168.159.131:11444)
节点2(192.168.159.131:11333)
2.tomcat配置
tomcat1(192.168.159.128:8081)
tomcat2(192.168.159.128:8082)
3.nginx安装在192.168.159.131。
首先,是配置tomcat,使其将session保存到memcached上。有两种方法:
方法一:在server.xml中配置。
找到host节点,加入
[html] view plaincopy
- <Context docBase="/var/www/html" path="">
- <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
- memcachedNodes="n1:192.168.159.131:11444 n2:192.168.159.131:11333"
- requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
- sessionBackupAsync="false" sessionBackupTimeout="3000"
- transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
- copyCollectionsForSerialization="false" />
- </Context>
方法二:在context.xml中配置。
找到Context节点,加入
[html] view plaincopy
- <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
- memcachedNodes="n1:192.168.159.131:11444"
- requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
- sessionBackupAsync="false" sessionBackupTimeout="3000"
- transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
- copyCollectionsForSerialization="false" />
其次,配置nginx,用于测试session保持共享。
[html] view plaincopy
- upstream xxy.com {
- server 192.168.159.128:8081 ;
- server 192.168.159.128:8082 ;
- }
- log_format www_xy_com '$remote_addr - $remote_user [$time_local] $request '
- '"$status" $body_bytes_sent "$http_referer"'
- '"$http_user_agent" "$http_x_forwarded_for"';
- server
- {
- listen 80;
- server_name xxy.com;
- location / {
- proxy_pass http://xxy.com;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- access_log /data/base_files/logs/www.xy.log www_xy_com;
- }
最后,将你的应用放到两个tomcat中,并依次启动memcached、tomcat、nginx。访问你的nginx,可以发现两个tomcat中的session可以保持共享了。
二、nginx+tomcat+redis (依赖包下载)
1.redis配置(192.168.159.131:16300)(v2.8.3)
2.tomcat配置
tomcat1(192.168.159.130:8081)
tomcat2(192.168.159.130:8082)
3.nginx安装在192.168.159.131。
首先,是配置tomcat,使其将session保存到redis上。有两种方法,也是在server.xml或context.xml中配置,不同的是memcached只需要添加一个manager标签,而redis需要增加的内容如下:(注意:valve标签一定要在manager前面。)
[html] view plaincopy
- <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
- <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
- host="192.168.159.131"
- port="16300"
- database="0"
- maxInactiveInterval="60"/>
其次,配置nginx,用于测试session保持共享。
[html] view plaincopy
- upstream redis.xxy.com {
- server 192.168.159.130:8081;
- server 192.168.159.130:8082;
- }
- log_format www_xy_com '$remote_addr - $remote_user [$time_local] $request '
- '"$status" $body_bytes_sent "$http_referer"'
- '"$http_user_agent" "$http_x_forwarded_for"';
- server
- {
- listen 80;
- server_name redis.xxy.com;
- location / {
- proxy_pass http://redis.xxy.com;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- access_log /data/base_files/logs/redis.xxy.log www_xy_com;
- }
最后,将你的应用放到两个tomcat中,并依次启动redis、tomcat、nginx。访问你的nginx,可以发现两个tomcat中的session可以保持共享了。
上面文章中,有一点需要说明的是:
如果tomcat配置中,将manager放在server.xml中,那么使用maven做热部署时,会发生失败。所以,本人推荐放在context.xml中。
多台tomcat服务的session共享 memcached与redis相关推荐
- Windows7 + Nginx + Memcached + Tomcat 集群 session 共享
一,环境说明 操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本, Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http:// ...
- Nginx+Tomcat+Memecached实现session共享配置
这段时间一直在搞项目部署,以前从来没做过,感觉很吃力,下面这个是自己配的Ubuntu下Nginx+Tomcat+Memecached实现session共享配置参考文档,欢迎大家拍砖,不知为啥sessi ...
- Nginx+tomcat+redis实现高可用负载均衡session共享集群+redis哨兵监控
实验拓扑图``` 实验步骤: 一.做nginx和tomcat的代理 二.做keepalived+nginx的双机热备份,vip:192.168.10.100 三.做keepalived+redis的哨 ...
- tomcat集群session共享
在部署cas系统的时候,遇到个问题,在tomcat集群部署cas系统,不能在一边服务器实现了登陆而在另一侧服务器还是没登录的.所以要实现tomcat集群的session的共享,从而实现高可用. 了解到 ...
- Tomcat可以实现Session共享方案
说明:原来Tomcat也是可以实现Session共享的,这样大大减少的硬编码的实现,并且前面用Nginx分流时不用考虑Session的问题,因为是Web容器提供了Session共享的支持. 1.在每个 ...
- PHP集群中SESSION共享方案之Redis
我记得我之前有写过在PHP集群中使用memcached来共享SESSION的解决方法,其实redis还是一样!出差在外,咱就别太讲究了,码篇博客做为睡前甜点吧 搭建PHP集群的第一步就是设置负载均 ...
- Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统
Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...
- MSM实现tomcat集群的session共享
本文首发于我的个人网站: https://hewanyue.com/ 本文作者: Hechao 本文链接: https://hewanyue.com/blog/6254cc16.html 会话保持起源 ...
- Redis + Tomcat + Nginx 集群实现 Session 共享
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 蕃薯耀 链接 | www.cnblogs.com/fan ...
最新文章
- Java-Reflection反射-获取包括父类在内的所有字段
- 某公司的一道机考题的解答
- android scrollview居中,使用 HorizontalScrollView 实现滚动控制
- java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
- 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
- 《C和指针》——字符串操作补、字符串内存操作
- 分组框控件 1130
- 腾讯云实验之Linux 基础入门
- mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
- Android 编程下将 Bitmap 转为 InputStream
- 调整数组顺序使奇数位于偶数前面(剑指offer)
- websphere java和进程管理_Websphere 学习(一)
- uniapp使用苹果支付
- 政府采购和招标投标常见问题:评标的依据是什么?
- Android Studio | 5种Log | android.util.Log
- 爬取东方财富的十大成交股
- Unity鼠标拖拽旋转拉远拉近场景
- 怎样用网址查询微信公众号的二维码
- (附源码)基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
- A. Omkar and Bad Story
热门文章
- 收银机服务器操作系统,第二章 超市收银机操作系统最终版.doc
- 计算火车运行时间(pta)
- LeetCode 310 最小高度树
- 流水线的吞吐量,加速比,效率的计算
- Python 数据全部显示,去掉中间省略号(pandas、...)
- Java 反射调用方法实例,动态动用方法实例
- Ubuntu16.04自动、手动安装MongoDB的详细教程
- Windows编程—控制面板程序显示信息修改(程序图标、名称、链接等)
- JAVA中整数类型数据溢出问题研究
- Windows OS上安装运行Apache Kafka教程