您的位置:首页 > 数据库 > Memcache

Tomcat基于MSM+Memcached实现Session共享

2017-02-26 22:34 176 查看

简述

上一篇文章,分别演示了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: