`

Tomcat集群——使用MSM管理集群Session

阅读更多
    上一篇文章,介绍了使用Tomcat本身的集群功能,保存Session会话的也是Tomcat本身提供的功能,另外还有一种模式,利用第三方(内存,数据库,缓存都行)来保存会话。
    如果自己来做的话,就是给所有的请求添加filter,在请求到来的时候,在filter中去第三方先去读取session信息。目前有一种通用的做法,使用Memcache来保存session信息,Tomcat本身也支持这样的扩展,使用Memcached_Session_Manager,这就是一个用于解决分布式tomcat环境下session共享的问题的开源解决方案。

首先,配置一个msm的最通用的配置方式:
1.在tomcat的context.xml配置文件中加入以下配置:
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
		memcachedNodes="n1:127.0.0.1:11211"  #memcached的地址
		sticky="false"  
		sessionBackupAsync="false"  
		lockingMode="auto"  
		requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
		transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
    /> 
...


2.下载所需要的jar包,主要是msm本身的包和序列化所用的包,在附件中提供,msm的版本是1.6.3,kyro-serializer的版本是0.10,javolution-serializer的版本是1.6.3
把这些jar包,放到Tomcat的lib目录下即可


3.启动memcached,这里假定我们都知道memcached

4.测试,我们还拿前面测试集群的项目ClusterValidate测试
部署项目,启动Tomcat。
1)在启动日志中,我们能看到类似“信息: Creating transcoder factory de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory”这样的信息,代表加载memcached-session-manager成功(使用附件的所有jar包能保证不缺少jar包,注意把子目录内的jar包夜拷贝到lib的目录下(不带子目录的))
2)然后输入地址:http://localhost:38080/ClusterValidate/test.jsp,点击请求
关掉Tomcat再重新启动,注意浏览器不要关掉(浏览器内保存的有sessionid),再次请求,可以看到session信息还在

说明使用memcached-session-manager保存session成功了。

----------------------------------------------------------------------

上面是最典型的使用memcached-session-manager的方式,非黏性的session,kyro序列化方式,存储目标地址是memcached
下面介绍下其它几个配置的东西:
1.对于Session包含黏性、非黏性Session
2.对于序列化的方式,不仅有kyro的方式(效率高一点而已),还有javolution的方式,附件的jar包就区分了两种方式,每种方式拷贝不同的序列化jar包就行了。
3.存储session的目标地址还可以是membase
下面进行阐述:
1.黏性session处理
配置修改如下:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"      memcachedNodes="n1:192.168.1.101:11211,192.168.1.102:11211"  
    failoverNodes="n1"  
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
   />

2.使用javolution序列化
注意先要把javolution需要的jar包拷贝到Tomcat的lib目录
上面的配置结构不变(要分清黏性,非黏性),修改序列化选项
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory” 
3.存储session到membase
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
    memcachedNodes="http://host1.yourdomain.com:8091/pools"  
    username="bucket1"  
   password="topsecret"  
   memcachedProtocol="binary"  
    sticky="false"  
    sessionBackupAsync="false"  
   requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  
   />  




Tips1 msm在黏性session和非黏性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 为主 session,memcached 2 为备session。Request请求到来时,从memcached 2加载备 session 到 tomcat,(当 容器 中还是没有session 则从memcached1加载主 session 到 tomcat, 这种情况是只有一个memcached节点,或者有memcached1 出错时),Request请求结束时,将tomcat session更新至 主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的
  • msm.rar (1.2 MB)
  • 下载次数: 94
  • 大小: 18.5 KB
分享到:
评论

相关推荐

    memcached-session-manager(MSM) Tomcat集群session共享示例

    memcached-session-manager(MSM) Tomcat集群session共享示例

    tomcat7集群session共享memcache依赖包1.8.3

    在构建高可用的Web服务时,Tomcat集群是常见的选择,它可以提高系统的容错性和可扩展性。然而,集群中的各个节点之间如何有效地共享用户Session信息成为了一个关键问题。为了解决这个问题,我们可以利用第三方缓存...

    msm集群session共享

    `msm集群session共享`是指在多个Tomcat服务器之间实现用户session数据的共享,以保证用户在集群中的任意一台服务器上都能保持登录状态和其他会话信息的连续性。这种技术常用于提升网站的可用性和负载均衡能力。 `...

    Nginx+Tomcat+Memcached-Session-Manager集群Session共享

    通过本篇文档,读者应该能够获得构建基于Nginx+Tomcat+MSM的集群Session共享环境的知识,并能应用这些知识进行实际操作和测试。需要注意的是,在实际操作中,环境配置细节会根据具体需求和软件版本有所不同,因此在...

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

    集群session共享原理** 当用户访问应用时,Nginx将请求分发到一个Tomcat实例。该实例将session数据保存在Memcached中,并将session ID返回给用户。之后,无论用户请求哪个Tomcat实例,只要session ID相同,其他实例...

    msm-session所有依赖包

    标题中的"msm-session所有依赖包"指的是Memcached Session Manager(MSM)的相关依赖组件,这是一个用于在Tomcat集群中实现session共享的解决方案。MSM利用了memcached这个分布式内存对象缓存系统来存储和管理用户的...

    tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

    MSM(Memcached Session Manager)是一个用于Tomcat的session管理器,它允许我们使用Memcached来存储和共享session。在本例中,我们使用的是MSM 1.9.7版本。安装MSM时,需要将jar包添加到Tomcat的lib目录下,并在...

    Memcached-Session-Manager多tomcat实现session共享配置

    **Memcached-Session-Manager与Tomcat集群中的Session共享** 在分布式系统中,尤其是在使用了多个Tomcat实例作为Web服务器的集群环境中,确保用户会话(Session)在各个节点之间共享是至关重要的。Memcached-...

    Tomcat+memcached-session-manager1.8(MSM)

    【标签】"MSM集群Jar包" 指的是这个压缩包中包含的是与MSM相关的jar文件,这些jar文件是实现Tomcat与Memcached集成所必需的库。这可能包括`memcached-session-manager.jar`、`spymemcached.jar`(用于与Memcached...

    nginx+tomcat集群+memcached实现session共享(适用tc7、tc8)

    兼容Tomcat7 与tomcat8 +memcached做session共享 , 解决了tomcat7与Tomcat8的 java.lang.NoSuchFieldError: attributes 错误。

    tomcat使用memcached集群session共享(转载并修改)

    标题 "Tomcat 使用 Memcached 集群进行 Session 共享" 描述了一种在分布式环境中解决 Web 应用程序 Session 共享问题的技术。在传统的 Web 服务器中,Session 数据通常存储在单个服务器的内存中,这限制了可扩展性。...

    windows下Nginx+memcached+Tomcat集群配置实现session共享与负载均衡

    【Nginx、memcached和Tomcat集群配置实现session共享与负载均衡】 在Windows环境下,构建一个基于Nginx的高可用性Web集群,通常包括Nginx作为反向代理和负载均衡器,memcached用于session共享,以及多个Tomcat实例...

    tomcat6 memcache session manager session共享 jar包下载

    描述中提到,“用于tomcat6 使用memcache 实现session共享的jar包”,这表明这些jar文件是为Tomcat6设计的插件或库,目的是通过Memcache这个内存缓存系统来存储和管理Session数据。Memcache是一个高性能、分布式的...

    Nginx+Tomcat7+Memcached集群Session共享

    Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...

    memcach-session-manager(MSM)所需jar包,TOMCAT7

    标题提及的是"memcach-session-manager(MSM)所需jar包,TOMCAT7",这表明我们关注的是一个用于管理Tomcat7应用服务器会话的组件,即Memcached Session Manager(MSM)。MSM是基于Memcached的,它将用户的会话数据...

    tomcat8+memcached session共享所需的jar包

    tomcat8+memcached session共享所需的jar包, memcached-session-manager memcached-session-manager-tc8 msm-kryo-serializer spymemcached kryo-serializers所有jar包都有

    tomcat 做session共享所需jar包压

    总结来说,"Tomcat做session共享所需jar包"主要是为了实现跨服务器的Session共享,通过使用像MSM这样的工具,结合Memcached服务,可以有效地处理分布式环境中的Session管理问题,提升系统的扩展性和用户体验。...

    tomcat做session共享需要的全部jar包

    4. **Memcached-Session-Manager**: 这是一个针对Tomcat的Memcached Session管理器,允许将Session数据存储在分布式缓存系统Memcached中。这样,多个Tomcat实例可以访问同一份Session数据,实现Session共享。...

    memcached管理session资源

    完成上述配置后,Tomcat将使用MSM来管理session,将session数据透明地存储到Memcached中。通过这种方式,我们可以实现跨服务器的session共享,同时减轻服务器内存的压力,提高应用的性能和可扩展性。 在实际应用中...

Global site tag (gtag.js) - Google Analytics