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

谁都会走 提交于 2020-05-08 04:39:45

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

<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
    
    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
           memcachedNodes="n1:127.0.0.1:11211"
		   failoveNodes="n1"
           sticky="false"
           sessionBackupAsync="false"
		   sessionBackupTimeout="100"
           lockingMode="auto"
           requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
		   copyCollectionsForSerialization="true"
           transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
    />

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
</Context>

  

3. 准备测试脚本

<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
  <body>
    <% out.println("hello, This is Tomcat1");
	   out.println("<br>SESSION ID:" + session.getId()+"<br>"); %>
  </body>
</html>

以上1,2,3步在两台tomcat上面都需要做。

4. 启动memched,tomcat1,tomcat2,和nginx.

5. 测试结果如下

 

 

 由结果可以看出,两次请求被转发到了两台tomcat,但是他们的sesssion ID是没有变化的,也就是实现了session共享。

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!