1)整理集成所需jar
kryo-1.0.3.jar
kryo-serializers-0.8.jar
memcached-2.4.2.jar
memcached-session-manager-1.5.0.jar
memcached-session-manager-tc6-1.5.0.jar
minlog-1.2.jar
msm-kryo-serializer-1.5.0.jar
2)配置tomcat中context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
                  memcachedNodes="n1:192.168.1.23:11211" 
                 sticky="false" 
                  lockingMode="uriPattern:/path1|/path2" 
                  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 
                  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
         /> 
3)安装memcached服务
4)集成详细说明:
Tomcat session共享—MSM
 
一、原理
 
  MSM(memcached-session-manager) 支持tomcat6 和tomcat7 ,利用 Value(Tomcat 阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的, 支持 sticky  和 non-sticky 模式。
 
  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 。以达到主备同步之目的。
 
二、配置
 
1.sticky
 
<Context> 
         <Manager className=" de.javakaffee.web.msm.MemcachedBackupSessionManager" 
                  memcachedNodes="n1:localhost:11211 n2:localhost:11212" 
                  failoverNodes="n1" 
                  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 
                  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
        /> 
</Context>
 
2.non-sticky
 
<Context> 
         <Manager className=" de.javakaffee.web.msm.MemcachedBackupSessionManager" 
                  memcachedNodes="n1:localhost:11211 n2:localhost:11212" 
                 sticky="false" 
                  lockingMode="uriPattern:/path1|/path2" 
                  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 
                  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
         /> 
</Context>
 
3.jvmroute
 
配置$CATALINA_HOME/conf/server.xml             
 
         #每台机器jvmRoute不能相同 jvmRoute="tomcat2"
 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
 
配置$CATALINA_HOME/conf/context.xml<Context> 详见下
 
4.日志
 
在该日志文件中添加配置。$CATALINA_HOME/conf/logging.properties.
 
de.javakaffee.web.msm.level=FINE
 
5.jar
 
 kryo-1.03.jar
 kryo-serializers-0.8.jar
 memcached-2.4.2.jar
 memcached-session-manager-1.5.0.jar
 memcached-session-manager-tc6-1.5.0.jar
 minlog-1.2.jar
 msm-kryo-serializer-1.5.0.jar
三、流程图
1.sticky
2.non-sticky

浅谈负载均衡之【tomcat分布式session共享】的更多相关文章

  1. 【原创】搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    为什么移除首页?哪里不符合要求?倒是回我邮件啊! 一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下 ...

  2. 搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

    一.环境搭建 Linux下Vagrant搭建Tomcat7.Java7 二.Nginx的安装配置与测试 *虚拟机下转至root sudo -i 1)下载并解压(目前官网最新版本) 创建安装目录:mkd ...

  3. Apache和Tomcat 配置负载均衡(mod-proxy方式)-无session共享、无粘性session

    转:https://blog.csdn.net/wangjunjun2008/article/details/38268483 mod-proxy方式实现负载均衡是利用了Apache 2.x版本自带的 ...

  4. 浅谈负载均衡SLB、CLB和综合应用

    SLB     服务器负载均衡(Server Load Balancing),可以看作HSRP(热备份路由器协议)的扩展,实现多个服务器之间的负载均衡.     虚拟服务器代表的是多个真实服务器的群集 ...

  5. 【Linux学习十】负载均衡带来tomcat的session不一致问题

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 tomcat7 jdk7 session不一致是指web服务器(tom ...

  6. tomcat集群和负载均衡的实现(session同步)

      (一)环境说明 (1)服务器有4台,一台安装apache,三台安装tomcat (2)apache2.0.55.tomcat5.5.15.jk2.0.4.jdk1.5.6或jdk1.4.2 (3) ...

  7. 使用Redis存储Nginx+Tomcat负载均衡集群的Session

    配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...

  8. apache、mod_jk负载均衡与tomcat集群

    最近需要搭建apache和tomcat的集群,实现静态网站直接通过apache访问,动态网站转交给tomcat处理,实现负载均衡和tomcat集群配置. apache安装 wget http://ap ...

  9. 分布式Session共享(二):tomcat+memcached实现session共享

    一.前言 本文主要测试memcached实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port To ...

随机推荐

  1. 【HDOJ】1059 Dividing

    多重背包. #include <stdio.h> #include <string.h> #define mymax(a, b) (a>b) ? a:b ]; ]; vo ...

  2. hadoop2.2编程: 重写comparactor

    要点: 类型比较在hadoop的mapreduce中非常重要,主要用来比较keys; hadoop中的RawComparator<T>接口继承自java的comparator, 主要用来比 ...

  3. 【转】SourceTree的简单使用

    原文网址:http://blog.csdn.net/u011439289/article/details/42126507 今天开始参与公司项目的代码编写,公司内部采用的是gitlib,所以用到了So ...

  4. 基础题:HDU 5122 K.Bro Sorting

    Matt's friend K.Bro is an ACMer.Yesterday, K.Bro learnt an algorithm: Bubble sort. Bubble sort will ...

  5. DevExpress gridControl控件动态绑定列 zt

    DataTable dt = =Query.GetCustome=(ref customColumnCount); //绑定列 gridView.Columns.Add(}); gridView.Co ...

  6. DHU-1241 Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  7. 执行configure报错configure: error: C++ preprocessor "/lib/cpp" fails sanity check

    解决方案: 出现该情况是由于c++编译器的相关package没有安装,以root用户登陆,在终端上执行: # yum install glibc-headers # yum install gcc-c ...

  8. Android学习笔记(十四)方便实用的首选项-PreferenceActivity

    突然发现已经好多天没更新博客了,最近公司项目正在进行一个大跨度的重构,又碰上有新需求,一连好多天都是很晚才到家.其实这篇博文在草稿箱里面也存了很久了,本来想着不发了,不过感觉PreferenceAct ...

  9. 水leetcode 爬楼梯

    public class Solution { public int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; int pr ...

  10. Bzoj 3171: [Tjoi2013]循环格 费用流

    3171: [Tjoi2013]循环格 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 741  Solved: 463[Submit][Status][ ...