一  ,是基于tomcat cluster 来配置,当然这个配置也十分的简单,但是tomcat 官网建议tomcat cluster 配置,tomcat 不能超过4台,如果超过四台tomcat,不仅容易出现广播风暴,而且效率也是最低,为解决tomcat session 共享的问题,介绍一下memcached-session-Manager

二 memcache session manager 原理

MSM(Memcache-session-manager) 支持tomcat6 和tomcat7,利用Value(tomcat 阀值) 对Request 进行跟踪。 当tomcat 收到Request 请求时,从memcached 中加载session,Request 请求结束时,将tomcat session更新至memcached,以达到session 共享的目的,MSM 支持sticky 和non-sticky 两种模式

Sticky 模式:tomcat  session  为主session,memcache 为备session。Request 请求到来时,首先从memcached加载备session 到tomcat(仅当tomct jvmroute 发上变化时,否则直接取的是tomcat session);Request 请求结束时,将tomcat session 更新到memcached,以达到主备同步之目的。 Stick模式就是前端的loadbanlence 能保证每个用户的请求都路由到同一个tomcat上。

Non-Sticky模式:tomcat session 为中转session,memcached1为主session,memcache 2 为备session。 Request 请求到来时,从memcached 2 中加载session 到tomcat,(当容器中还是没有session 则从memcached1 加载主session 到tomcat,这中情况是只有一个memcached节点,或者有memcached1出错时),Request请求结束时,将tomcat session更新至memcached1 和memcached  2 中,并清除tomcat session。以达到主备同步之目。Non-sticky则每一次请求都肯能路由到不同tomcat中

MSM 特性

支持Tomcat6 和tomcat7,支持黏性和非黏性session,无单一故障点

可处理tomcat 故障转移,memcached 故障转移,插件式session 序列话,允许异步保存session,以提升响应速度,只有当session 有修改时,才会将session写回到memcached

需要下载觉得jar 包如下:

kryo-1.03.jar

kry0-serializers-0.9.jar

memcached-session-manager-1.6.1.jar

memcached-session-manager-tc6-1.6.1.jar

memcached-2.5.jar

minlog-1.2.jar

msm-kryo-serializer-1.6.1.jar

reflectasm-0.9.jar

spymemcached-2.8.2.jar

三 配置 sticky

1 使用默认的sticky session,kryo序列化方式,基于memcached 的缓存

需要配置$TOMCAT_HOME/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.3.44:11211,n2:192.168.3.44:11212"

failoverNodes="n1"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

2 开启 tomcat jvmRouter $TOMCAT_HOME/conf/server.xml

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat46">

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat48">

3 配置spymemcached 日志,在tomcat 启动脚本中添加

CATALINA_OPTS="-Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SunLogger"

4  配置MSM 的logging,在$TOMCAT_HOME/conf/logging.properties配置文件中添加如下

##memcached session manager log level

de.javakaffee.web.msm.level= FINE

# A handler's log level threshold can be set using SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL

net.spy.memcached.level = WARNING

# To make only the MemcachedConnection less verbose:

#net.spy.memcached.MemcachedConnection.level = WARNING

四 配置non-sticky

1 配置$TOMCAT_HOME/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.3.44:11211,n2:192.168.3.44:11212"

sticky="false"

lockingMode="auto"

requestUriIgnorePattern=".*\.(ico|png|gif|jps|css|js)$"

sessionBackupAsync="flase"    sessionBackupTimeout="1000"    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

2 配置spymemcached 日志,在tomcat 启动脚本中添加

CATALINA_OPTS="-Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SunLogger"

3  配置MSM 的logging,在$TOMCAT_HOME/conf/logging.properties配置文件中添加如下

##memcached session manager log level

de.javakaffee.web.msm.level= FINE

# A handler's log level threshold can be set using SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL

net.spy.memcached.level = WARNING

# To make only the MemcachedConnection less verbose:

#net.spy.memcached.MemcachedConnection.level = WARNING

注:参考的blog

http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

http://miwucc.iteye.com/blog/1329729

http://gong1208.iteye.com/blog/1596120

本文转自 freehat08 51CTO博客,原文链接:http://blog.51cto.com/freehat/970343,如需转载请自行联系原作者

基于MSM 的tomcat session 共享相关推荐

  1. MSM 实现 tomcat session 共享

    1.准备相关jar包 2.修改nginx配置文件nginx.conf: #服务器的集群 http { upstream netitcast.com { #服务器集群名字 #server 127.0.0 ...

  2. Nginx负载均衡+tomcat+session共享

    为什么80%的码农都做不了架构师?>>>    本文,是笔者工作之余写的,第一是把之前打系统框架的步骤记录下来.第二是将这个过程,谈不上经验,奉献给正在撘这种框架遇到各种bug,各种 ...

  3. C#session共享+redis_技术干货分享:基于SpringBoot+Redis的Session共享与单点登录

    categories: 架构 author: mrzhou tags: SpringBoot redis session 单点登录 基于SpringBoot+Redis的Session共享与单点登录 ...

  4. Memcached + MSM 实现Tomcat Session保持

    Memcached + MSM 实现Tomcat Session保持 tomcat memcached 大纲 前言 Memcached介绍 MSM介绍 实验拓扑 实验环境 实验步骤 安装配置Tomca ...

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

    转载自  Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 一.Session共享使用tomcat-cluster-redis-session-mana ...

  6. 集群tomcat+session共享

    2019独角兽企业重金招聘Python工程师标准>>> 1.要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服 ...

  7. C#session共享+redis_Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    作者:蕃薯耀 链接:www.cnblogs.com/fanshuyao 一.Session共享使用tomcat-cluster-redis-session-manager插件实现 插件地址见: htt ...

  8. tomcat session 共享

    1. nginx+tomcat7+memcached 安装JDK7 sudo apt-get install java7-jdk 安装tomcat7 Tomcat7下载地址 http://mirror ...

  9. Tomcat7基于Redis的Session共享实战二

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...

最新文章

  1. 深度学习debug沉思录
  2. 如果不当程序员,你会在做什么? | 每日趣闻
  3. python教程下载视频-python怎么下载视频
  4. school‘s movie demonstration
  5. 数据库原理学习笔记(一)关系完整性以及数据库完整性
  6. 计算机系统的主存主要是由()构成的。【最全!最详细分析!】
  7. 解决读写分离过期读的几个方案
  8. centos下如何使用sendmail发送邮件
  9. 灰度调节_网关实现灰度发布
  10. loading窗口动画 web_分享web前端七款HTML5 Loading动画特效集锦
  11. Linux系统下MYSQL主从同步
  12. 【转】HTTP请求中的form data和request payload的区别
  13. python安装opencv出现错误_通过pip安装opencv时出错
  14. 易基因|干货:m6A RNA甲基化MeRIP-seq测序分析实验全流程解析
  15. 易语言雷电模拟器adb模块制作实现一键模拟器多开
  16. gyp ERR! stack Error: EACCES: permission denied,解决
  17. 服务器系统怎么恢复出厂设置,华为服务器2288恢复出厂设置
  18. ppt压缩文件怎么压缩最小,ppt无损压缩
  19. HDU Identity Card
  20. 清默网络——IPV6的地址详解

热门文章

  1. matlab索引程序,Matlab索引到逻辑索引
  2. js页面跳转常用的几种方式
  3. RabbitMQ (五)实现类似Dubbo的RPC调用
  4. php 自定义属性,HTML5的data-*自定义属性是什么-
  5. python是高级动态语言_Python动态语言之魅力揭秘
  6. php类的测试用例,快速入门:集成 PHPUnit 编写测试用例
  7. 应用函数修饰符@来改变AI Studio的输出信息
  8. 2021年春季学期-信号与系统-第五次作业参考答案-第九小题
  9. 如何使用一个单片机的IO口控制两个LED?
  10. oracle数据库中insert,【Oracle】sql插入之 insert all、insert first