Tomcat基于MSM+Memcached实现Session共享

简述

上一篇文章,分别演示了session sticky 和 session cluster来实现会话保持的问题,但是它们缺点都不少,实际中用的很少,所以这篇文章我们还是通过Tomcat来演示一下实际中用得比较多的session server。

实验拓扑如下,为了减少实验中机器数量,就把Memcached和Tomcat放在同一台机器上了,实际中应该是要分开的。

实验步骤

Memcached官方文档

在node3,4上面安装配置Tomcat,提供测试的网页应用程序,node2上安装配置nginx。到这里的配置和上篇文章讲过,具体配置可以参考上篇文章。

在node3和node4上安装Memcached,yum install memcached libmemcached -y`
然后下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。

	memcached-session-manager-${version}.jar
	memcached-session-manager-tc${6,7,8}-${version}.jar
	spymemcached-${version}.jar
	msm-javolution-serializer-${version}.jar
	javolution-${version}.jar

分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:

<Context path="/test" docBase="test" reloadable="true">
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"    #使用的会话管理器
      memcachedNodes="n3:172.16.47.103:11211,n4:172.16.47.104:11211"    #成员
      failoverNodes="n3"
      requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"   #忽略的资源
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  #序列化工具
    />
</Context>

可以看到,Session ID一直没有变化,基于Session server的会话绑定实现了。

注:在配置好Tomcat,验证的时候遇到一个坑,其实是自己疏忽了:时间没有同步,结果验证的时候,session id一直在变,后来把时间同步后,结果正常。

我的个人站点iLurker.cn

posted @ 2017-02-26 22:34  iLurker  阅读(394)  评论(0编辑  收藏  举报