gteric 发表于 2015-11-19 08:10:13

Windows系统中配置Nginx+Tomcat+Memcached集群和Session共享

环境:windows 7 + nginx-1.1.5 + memcached-1.2.6-win32-bin+ apache-tomcat-7.0.20-windows-x86 + jdk-6u6-windows-i586-p(JDK 1.6,memcached-1.2.6-win32-bin下载地址:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip。
需要用到的jar包:
memcached-2.6.jar(http://spymemcached.googlecode.com/files/memcached-2.6.jar)
javolution-5.4.3.1.jar(http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar )
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc7-1.5.1.jar
msm-javolution-serializer-1.5.1.jar
msm-kryo-serializer-1.5.1.jar
msm-xstream-serializer-1.5.1.jar
以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中都可以找到。
安装Memcached
解压缩memcached-1.2.6-win32-bin.zip,打开cmd,进入memcached-1.2.6-win32-bin目录,运行“memcached.exe –d install”安装memcached的windows服务。
         安装niginx
与<<Windows下实现Nginx&#43;Tomcat集群部署方案>>是一样的。
安装Tomcat
网上很多资料都是基于Tomcat6的,如果使用Tomcat7需要用到memcached-session-manager-tc7-1.5.1.jar,把上面说到的jar包放在Tomcat7的lib目录下。
         我在测试的时候,设置了两个节点,也就是有两个Tomcat,他们主要的区别在于端口不同,因为我是在一台电脑上进行测试的。
1、server.xml修改
1)<Server port=&quot;8005&quot; shutdown=&quot;SHUTDOWN&quot;>两个Tomcat的port分别为:8005、8006
2)<Connector port=&quot;8080&quot; protocol=&quot;HTTP/1.1&quot; connectionTimeout=&quot;20000&quot; redirectPort=&quot;8443&quot; />两个Tomcat的port分别为:8080、8081
3)<Connector port=&quot;8009&quot; protocol=&quot;AJP/1.3&quot; redirectPort=&quot;8443&quot; />两个Tomcat的port分别为:8009、9009
4)<Engine name=&quot;Catalina&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;tomcat7-1&quot;>两个Tomcat的jvmRoute分别为:tomcat7-1、tomcat7-2
2、context.xml修改
在<Context>标签内加入以下代码:
<Manager className=&quot;de.javakaffee.web.msm.MemcachedBackupSessionManager&quot;
memcachedNodes=&quot;n1:localhost:11211&quot;
requestUriIgnorePattern=&quot;.*/.(png|gif|jpg|css|js)$&quot;
sessionBackupAsync=&quot;false&quot;
sessionBackupTimeout=&quot;100&quot;
transcoderFactoryClass=&quot;de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory&quot;
copyCollectionsForSerialization=&quot;false&quot;/>
测试
在两个Tomcat的webapps目录下创建test目录,在test目录下,创建index.jsp文件,文件内容如下:
<%@ page contentType=&quot;text/html; charset=GBK&quot; %>
<%@ page import=&quot;java.util.*&quot; %>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println(&quot;<br> SESSION ID:&quot; &#43; session.getId()&#43;&quot;<br>&quot;);
%>
</body>
</html>
我们先启动memcached,打开cmd,进入memcached-1.2.6-win32-bin目录,运行“memcached.exe –p 11211 –d start”;然后启动niginx和两个Tomcat。
打开浏览器,输入http://127.0.0.1/test,我们会看到页面上显示以下内容:
SESSION ID:D91C4F897566168C82A92AF2A36E154B-n1.tomcat7-2
         “D91C4F897566168C82A92AF2A36E154B”为SessionId,“n1”为memcached的节点名称,“tomcat7-2”为目前所访问的web应用服务器的名称。
页: [1]
查看完整版本: Windows系统中配置Nginx+Tomcat+Memcached集群和Session共享