在前两博文的基础上,实现基于memcached的session共享。采用Windows10操作系统。
1. 搭建Tocat集群(参考第一篇博文)。
2. 搭建nginx反向代理服务器(参考第二篇博文)。
3. 搭建memcached缓存系统。memcached 官网没有给出基于windows系统的安装包,这个大家可以再网上搜索。有很多人自己buiild的基于windows系统的memchaed.
安装很简单,直接解压到安装路径下,然后用管理员身份到安装路径下在CMD中执行“memcached.exe -d install”,并执行“memcached.exe -d start”启动memcached.
本文不在描述具体安装过程。接下来讨论利用MSM来实现Tomcat集群的session共享。
1. 下载具体的依赖包,并导入到tomcat的lib下面(本人放在D:\D\apache-tomcat-8.5.30-tomcat1\lib和D:\D\apache-tomcat-8.5.30-tomcat2\lib)。因为序列化方式不一样,导入的依赖包也不一样。
我采用的是javolution方式(kyro序列化方式一直没有测试成功,可能是导入的依赖包版本不match,后续会继续研究),采用javolution方式所需要的依赖包如下:
javolution-5.4.3.jar
memcached-session-manager-2.1.0.jar
memcached-session-manager-tc8-2.1.0.jar
msm-javolution-serializer-2.1.0.jar
spymemcached-2.11.1.jar
把这些依赖包放到tomcat的lib目录下。
2. 修改tomcat的context.xml文件
WEB-INF/web.xml ${catalina.base}/conf/web.xml
3. 准备测试脚本
<%@ page language="java" %><%@ page import="java.util.*" %> <% out.println("hello, This is Tomcat1"); out.println("SESSION ID:" + session.getId()+""); %>
以上1,2,3步在两台tomcat上面都需要做。
4. 启动memched,tomcat1,tomcat2,和nginx.
5. 测试结果如下
由结果可以看出,两次请求被转发到了两台tomcat,但是他们的sesssion ID是没有变化的,也就是实现了session共享。
最后,欢迎大家指正,讨论。