Win10 搭建 nginx + tomcat 集群 + memcached + session 共享


在前两博文的基础上,实现基于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共享。

最后,欢迎大家指正,讨论。