tomcat与memcached-session-manager共享session测试

简介

看书刚好看到集群session共享,总觉得只看不做,不能确定这到底是怎么运行的.所以就做了这个测试.有关Memcached-Session-Manager,Memcached,以及集群session共享等相关知识,请自行补充.本次就简单记录下测试过程.
有关其他的方式以及其他的情况,本文不做说明,有需要的话,会再写其他情况和方式下的文章.

环境说明

  • 本机OSX 10.11,tomca7.0.57,memcached-1.4.24
  • 虚拟机Ubuntu16.04,tomca7.0.57,memcached-1.4.24
  • 使用non-sticky sessions(非粘性session)
  • 序列化:使用默认,java进行序列化,由memcached-session-manager.jar这个jar包来提供方法.
  • 有关粘性和非粘性的区别以及序列化等不做解释.

具体步骤

安装jdk,memcached,tomcat

不做详细说明

放jar包

将如下相关jar包分别放置到两台机器的tomcat $CATALINA_HOME/lib/目录中.

  • memcached-session-manager-${version}.jar
  • memcached-session-manager-tc7-${version}.jar
  • spymemcached-2.11.1.jar

修改tomcat配置文件

两台机器分别修改tomcat $CATALINA_HOME/conf/context.xml文件,添加如下代码到Context节点下:


部署Web项目到tomcat

新建测试用的web项目,并部署到两台tomcat中.测试代码简单如下:


    Session ID:<%=session.getId()%> 
IP:<%=request.getServerName()%>
Port:<%=request.getServerPort()%>

启动两台机器的memcached

memcached -m 32 -p 11211 -d

启动两台机器的tomcat

查看tomcat信息tail -f catalina.out未报错,看到类似如下信息就启动成功

信息: --------
-  finished initialization:
- sticky: false
- operation timeout: 1000
- node ids: [n1, n2]
- failover node ids: []
- storage key prefix: null
--------

访问测试页面

分别访问两台机器的测试页面:

  • 同一个浏览器
  • 两个浏览器
  • 结束掉一个机器的memcached进程在访问等等

同一个浏览器不同标签页访问192.168.110.197和192.168.110.198 得到的sessionid都是一样的:

Session ID:39D5E175513B4496C136F5E1554478CD-n1 
IP:192.168.110.197 
Port:8080

Session ID:39D5E175513B4496C136F5E1554478CD-n1 
IP:192.168.110.198 
Port:8080

关闭ip为197的memcached进程之后,刷新页面:

Session ID:39D5E175513B4496C136F5E1554478CD-n2 
IP:192.168.110.197 
Port:8080

Session ID:39D5E175513B4496C136F5E1554478CD-n2 
IP:192.168.110.198 
Port:8080

测试成功.

参考

https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#introduction

http://laoxu.blog.51cto.com/4120547/1566477

你可能感兴趣的:(tomcat与memcached-session-manager共享session测试)