由于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
  1. <Context docBase="/var/www/html" path="">
  2. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  3. memcachedNodes="n1:192.168.159.131:11444 n2:192.168.159.131:11333"
  4. requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
  5. sessionBackupAsync="false" sessionBackupTimeout="3000"
  6. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  7. copyCollectionsForSerialization="false" />
  8. </Context>

方法二:在context.xml中配置。

找到Context节点,加入

[html] view plaincopy
  1. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  2. memcachedNodes="n1:192.168.159.131:11444"
  3. requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
  4. sessionBackupAsync="false" sessionBackupTimeout="3000"
  5. transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
  6. copyCollectionsForSerialization="false" />

其次,配置nginx,用于测试session保持共享。

[html] view plaincopy
  1. upstream  xxy.com  {
  2. server   192.168.159.128:8081 ;
  3. server   192.168.159.128:8082 ;
  4. }
  5. log_format  www_xy_com  '$remote_addr - $remote_user [$time_local] $request '
  6. '"$status" $body_bytes_sent "$http_referer"'
  7. '"$http_user_agent" "$http_x_forwarded_for"';
  8. server
  9. {
  10. listen  80;
  11. server_name  xxy.com;
  12. location / {
  13. proxy_pass        http://xxy.com;
  14. proxy_set_header   Host             $host;
  15. proxy_set_header   X-Real-IP        $remote_addr;
  16. proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  17. }
  18. access_log  /data/base_files/logs/www.xy.log  www_xy_com;
  19. }

最后,将你的应用放到两个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
  1. <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
  2. <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
  3. host="192.168.159.131"
  4. port="16300"
  5. database="0"
  6. maxInactiveInterval="60"/>

其次,配置nginx,用于测试session保持共享。

[html] view plaincopy
  1. upstream  redis.xxy.com  {
  2. server   192.168.159.130:8081;
  3. server   192.168.159.130:8082;
  4. }
  5. log_format  www_xy_com  '$remote_addr - $remote_user [$time_local] $request '
  6. '"$status" $body_bytes_sent "$http_referer"'
  7. '"$http_user_agent" "$http_x_forwarded_for"';
  8. server
  9. {
  10. listen  80;
  11. server_name redis.xxy.com;
  12. location / {
  13. proxy_pass        http://redis.xxy.com;
  14. proxy_set_header   Host             $host;
  15. proxy_set_header   X-Real-IP        $remote_addr;
  16. proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  17. }
  18. access_log  /data/base_files/logs/redis.xxy.log  www_xy_com;
  19. }

最后,将你的应用放到两个tomcat中,并依次启动redis、tomcat、nginx。访问你的nginx,可以发现两个tomcat中的session可以保持共享了。

上面文章中,有一点需要说明的是:

如果tomcat配置中,将manager放在server.xml中,那么使用maven做热部署时,会发生失败。所以,本人推荐放在context.xml中。

多台tomcat服务的session共享 memcached与redis相关推荐

  1. Windows7 + Nginx + Memcached + Tomcat 集群 session 共享

    一,环境说明 操作系统是Windows7家庭版(有点不专业哦,呵呵!),JDK是1.6的版本, Tomcat是apache-tomcat-6.0.35-windows-x86,下载链接:http:// ...

  2. Nginx+Tomcat+Memecached实现session共享配置

    这段时间一直在搞项目部署,以前从来没做过,感觉很吃力,下面这个是自己配的Ubuntu下Nginx+Tomcat+Memecached实现session共享配置参考文档,欢迎大家拍砖,不知为啥sessi ...

  3. Nginx+tomcat+redis实现高可用负载均衡session共享集群+redis哨兵监控

    实验拓扑图``` 实验步骤: 一.做nginx和tomcat的代理 二.做keepalived+nginx的双机热备份,vip:192.168.10.100 三.做keepalived+redis的哨 ...

  4. tomcat集群session共享

    在部署cas系统的时候,遇到个问题,在tomcat集群部署cas系统,不能在一边服务器实现了登陆而在另一侧服务器还是没登录的.所以要实现tomcat集群的session的共享,从而实现高可用. 了解到 ...

  5. Tomcat可以实现Session共享方案

    说明:原来Tomcat也是可以实现Session共享的,这样大大减少的硬编码的实现,并且前面用Nginx分流时不用考虑Session的问题,因为是Web容器提供了Session共享的支持. 1.在每个 ...

  6. PHP集群中SESSION共享方案之Redis

      我记得我之前有写过在PHP集群中使用memcached来共享SESSION的解决方法,其实redis还是一样!出差在外,咱就别太讲究了,码篇博客做为睡前甜点吧 搭建PHP集群的第一步就是设置负载均 ...

  7. Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统

    Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...

  8. MSM实现tomcat集群的session共享

    本文首发于我的个人网站: https://hewanyue.com/ 本文作者: Hechao 本文链接: https://hewanyue.com/blog/6254cc16.html 会话保持起源 ...

  9. Redis + Tomcat + Nginx 集群实现 Session 共享

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 蕃薯耀 链接 | www.cnblogs.com/fan ...

最新文章

  1. Java-Reflection反射-获取包括父类在内的所有字段
  2. 某公司的一道机考题的解答
  3. android scrollview居中,使用 HorizontalScrollView 实现滚动控制
  4. java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性
  5. 微服务架构案例(06):通过业务、应用、技术、存储方面,聊聊架构
  6. 《C和指针》——字符串操作补、字符串内存操作
  7. 分组框控件 1130
  8. 腾讯云实验之Linux 基础入门
  9. mysql 5.6 linux 64_Linux64位服务器编译安装MySQL5.6(CentOS6.4)
  10. Android 编程下将 Bitmap 转为 InputStream
  11. 调整数组顺序使奇数位于偶数前面(剑指offer)
  12. websphere java和进程管理_Websphere 学习(一)
  13. uniapp使用苹果支付
  14. 政府采购和招标投标常见问题:评标的依据是什么?
  15. Android Studio | 5种Log | android.util.Log
  16. 爬取东方财富的十大成交股
  17. Unity鼠标拖拽旋转拉远拉近场景
  18. 怎样用网址查询微信公众号的二维码
  19. (附源码)基于SSM框架的图片分享及评价网站设计与实现 毕业设计201524
  20. A. Omkar and Bad Story

热门文章

  1. 收银机服务器操作系统,第二章 超市收银机操作系统最终版.doc
  2. 计算火车运行时间(pta)
  3. LeetCode 310 最小高度树
  4. 流水线的吞吐量,加速比,效率的计算
  5. Python 数据全部显示,去掉中间省略号(pandas、...)
  6. Java 反射调用方法实例,动态动用方法实例
  7. Ubuntu16.04自动、手动安装MongoDB的详细教程
  8. Windows编程—控制面板程序显示信息修改(程序图标、名称、链接等)
  9. JAVA中整数类型数据溢出问题研究
  10. Windows OS上安装运行Apache Kafka教程