调度至不同的节点上,session信息没有发上变化,测试完成。
基于memcached+MSM实现session服务器
实验拓扑
实验环境:
192.168.1.116 #http服务器
192.168.1.106 #tomcat node1
192.168.1.127 #tomcat node2
192.168.1.121,192.168.1.122 #memcached服务器
工作原理:
用户第一次访问时,服务器端会创建会话信息,保存在进程中,实时同步至memcache,若下一次调度至其他节点上,该节点首先会检查自己的会话区域,若没有这个用户的会话,就去memcache中找这个会话信息,然后将这个会话信息从memcache读到自己的web container中,若会话更新也会立刻同步至memcache中。之后同一个客户端的某一次请求调度至之前访问过的节点,该节点会先去memcache中检查本地的会话信息是否和memcache上的同步,如果不同步从memcache读取新数据覆盖自己的原有数据。
memcached-session-manager简介
memcached-session-manager(msm)为Google提供的一款工具,能够实现将tomcat会话信息保存至memcache中,并在需要时将对应信息读入web container。它可以工作在两种模式下:1)会话有粘性,2)会话无粘性,即前端的代理服务器是否启用了stickysession(同一客户端请求代理至同一服务器)。上述的工作原理是工作在会话无粘性的模式下,若在会话有粘性的场景中,当用户来访问时,就不需要每次去memcache中检查会话信息是不是最新的,会话更新后,也不需要将会话信息及时同步至memcache中,可以节约一些步骤和带宽。
memcached-session-manager的下载地址,,该项目基于Java开发,需要使用如下的jar文件(version版本号):
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