【转】MSM搭建(Memcached_Session_Manager)--解决集群session共享
一、环境
二、memcached搭建
三、tomcat配置
四、nginx配置
MSM(memcached-session-manager) 支持tomcat6 和tomcat7 ,利用 Value(Tomcat 阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat
session更新至memcached,以达到session共享之目的, 支持 sticky 和 non-sticky 模式。
黏性(sticky)session:
非黏性( non-sticky)session:
Sticky 模式: tomcat session 为 主session, memcached 为备 session。Request请求到来时, 从memcached加载备 session到 tomcat (仅当tomcat
jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。
Non-Sticky模式:tomcat session 为 中转session, memcached1 为主 sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备 session 到 tomcat,(当 容器 中还是没有session 则从memcached1加载主 session 到 tomcat, 这种情况是只有一个memcached节点,或者有memcached1 出错时),Request请求结束时,将tomcat
session更新至主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的。
此属性是必须的。
此属性是必须的。这个属性必须包含你所有运行的memcached节点。每个节
点的定义格式为<id>:<host>:<port>。 多个之间用空格或半角逗号隔开(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。如果你设置单个memcache节点<id>是可选的,所以它允许设置为<host>:<port>(memcachedNodes="localhost:11211")。
可选项,属性只能用在非粘连Session机制中。
此属性必须包含memcached节点的Id,此节点是Tomcat作为备份使用。多个之间用空格或逗号隔开
可选项,默认为text。出属性指明memcached使用的存储协议。只支持text或者binary。
指定使用粘性的还是非粘性的Session机制。
此属性只对非粘性Session有用,默认为none。
指定非粘性Session的锁定策略。他的只有
(1)、none:从来不加锁
(2)、all: 当请求时对Session锁定,直到请求结束
(3)、auto:对只读的request不加锁,对非只读的request加锁
(4)、uriPattern:<regexp>: 使用正则表达式来比较requestRUI + "?" + queryString来决定是否加锁,
requestUriIgnorePattern: 可选项
此属性是那些不能改备份Session的请求的正则表达式。如果像css,JavaScript,图片等静态文件被同一个Tomcat和同一个应用上下文来提供,这些
请求也会通过memcached-session-manager。但是这些请求在一个http会话中几乎没什么改变,所以他们没必要触发Session备份。所以那些静态文件
没必要触发Session备份,你就可以使用此属性定义。此属性必须符合Javaregex正则规范。
sessionBackupAsync 可选项,默认true
指定Session是否应该被异步保存到Memcached中。 如果被设置为true,backupThreadCount设置起作用,如果设置false,通过sessionBackupTimeout
设置的过期时间起作用。
backupThreadCount 可选项,默认为CPU内核数。
用来异步保存Session的线程数(如果sessionBackupAsync="true")。
sessionBackupTimeout 可选项,默认100,单位毫秒
设置备份一个Session所用的时间,如果操作超过时间那么保存失败。此属性只在sessionBackupAsync="false"是起作用。默认100毫秒
sessionAttributeFilter 可选项 从1.5.0版本有
此属性是用来控制Session中的那个属性值保存到Memcached中的正则表达式。郑则表达式被用来匹配Session中属性名称。如sessionAttributeFilter="^(userName|sessionHistory)$"
指定了只有"userName"和"sessionHistory"属性保存到Memcached中。
依赖于选择的序列化策略。
transcoderFactoryClass 可选,默认为 de.javakaffee.web.msm.JavaSerializationTranscoderFactory此属性值是创建序列化和反序列化保存到Memcached中的Session的编码转换器的工厂类名。这个指定的类必须实现了de.javakaffee.web.msm.TranscoderFactory
和提供一个无参的构造方法。例如其他的有效的实现在其他packages/jars中提供如:msm-kryo-serializer,msm- xstrea-serializer和msm-javolution-serializer.
copyCollectionsForSerialization 可选项,默认false。
customConverter 可选项
用来指定是否进行统计。
enabled 可选项,默认true
指定Session保存到Memcached中是否可用和是否可以通过JMX进行改变。只用于粘性Session。
配置$CATALINA_HOME/conf/server.xml
- <Engine name=
"Catalina"defaultHost="localhost"jvmRoute="tomcat2">
注意每台tomcat的jvmroute参数都不能一样
返回sessionid :011F1CAEAF5AE925F4124D94785AFE41-n1 .tomcat2
n1 表示memcached ; .tomcat2表示配置jvmRoute。
【转】MSM搭建(Memcached_Session_Manager)--解决集群session共享的更多相关文章
- Shiro+Redis实现tomcat集群session共享
一.背景 当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧 ...
- nginx+tomcat+redis的集群+session共享
nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...
- Nginx+Tomcat集群+session共享
Nginx+Tomcat集群+session共享 1)安装Nginx 2)配置多个Tomcat,在server.xml中修改端口(端口不出现冲突即可) 3)在nginx.conf文件中配置负载均衡池, ...
- 【转】Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...
- session服务器Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...
- 分布式集群Session共享 简单多tomcat8+redis的session共享实现
; i++) { str = str + session.getAttribute("name" + i) + "<br>"; } response ...
- tomcat redis 集群 session共享
jcoleman/tomcat-redis-session-manager: Redis-backed non-sticky session store for Apache Tomcathttps: ...
- 基于Memcached的tomcat集群session共享所用的jar
多个tomcat各种序列化策略配置如下:一.java默认序列化tomcat配置conf/context.xml添加<Manager className="de.javakaffee.w ...
- 基于Memcached的tomcat集群session共享所用的jar及多个tomcat各种序列化策略配置
原文:http://www.cnblogs.com/interdrp/p/4096466.html 多个tomcat各种序列化策略配置如下:一.java默认序列化tomcat配置conf/contex ...
随机推荐
- C#的path.GetFullPath 获取上级目录实现方法
这篇文章主要介绍了C#的path.GetFullPath 获取上级目录实现方法,包含了具体的C#实现方法以及ASP.net与ASP等的方法对比,非常具有实用价值,需要的朋友可以参考下 本文实例讲述 ...
- servlet定义
. 运行在服务器上的java类
- LeetCode----172. Factorial Trailing Zeroes(Java)
package singlenumber136; //Given an array of integers, every element appears twice except for one. F ...
- Animation小问题整理
1.在动画播放中改变层级内容的名字,不会造成动画内容映射的改变. 2.Animator动画剪辑层级没问题,但是不播放 检查是否Mask损坏,FBX文件的Animations选项下面有个Mask.Uni ...
- [问题2014A11] 复旦高等代数 I(14级)每周一题(第十三教学周)
[问题2014A11] 设 \(n\) 阶方阵 \(A,B\) 满足: \((A+B)^2=A+B\), \(\mathrm{r}(A+B)=\mathrm{r}(A)+\mathrm{r}(B)\ ...
- jquery之empty()方法详解
empty()函数用于清空每个匹配元素内的所有内容. empty()函数将会移除每个匹配元素的所有子节点(包括文本节点.注释节点等所有类型的节点). 该函数属于jQuery对象(实例). 语法 jQu ...
- 怎样让webservice在浏览器远程浏览时像在本地浏览一样有参数输入框
从远程客户端访问服务器上的WebService能够显示,但点击调用相关的方法时显示“只能用于来自本地计算机的请求”,这时提醒我们还需要在服务器进行相关的配置才能让其他机器正常访问该WebService ...
- Linux进程关系
Linux进程关系 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的进程相互之间有一定的关系.比如说,在Linux ...
- Tomcat 配置 默认应用 (去掉项目名称、移除项目名称)
Tomcat 配置默认应用,即只输入域名或ip,不用输入项目名称: <Host name="localhost" appBase="webapps" un ...
- DB2表分区删除
近日,由于部门数据库读库空间过小,提出删除掉两个月之前日志表的分区(数据库分区是按时间月分区),记述如下: 上网搜索资料发现删除表分区大概分这么几步: 1.查询需要删除掉的分区: select t.D ...