/ 中存储网

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

2013-10-10 13:13:01 来源:itjs.cn

环境: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

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+Tomcat集群部署方案>>是一样的。

安装Tomcat

网上很多资料都是基于Tomcat6的,如果使用Tomcat7需要用到memcached-session-manager-tc7-1.5.1.jar,把上面说到的jar包放在Tomcat7的lib目录下。

我在测试的时候,设置了两个节点,也就是有两个Tomcat,他们主要的区别在于端口不同,因为我是在一台电脑上进行测试的。

1、server.xml修改

1)<Server port="8005" shutdown="SHUTDOWN">两个Tomcat的port分别为:8005、8006

2)<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />两个Tomcat的port分别为:8080、8081

3)<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />两个Tomcat的port分别为:8009、9009

4)<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat7-1">两个Tomcat的jvmRoute分别为:tomcat7-1、tomcat7-2

2、context.xml修改

在<Context>标签内加入以下代码:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:localhost:11211"

requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"

sessionBackupAsync="false"

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"

copyCollectionsForSerialization="false"/>

测试

在两个Tomcat的webapps目录下创建test目录,在test目录下,创建index.jsp文件,文件内容如下:

<%@ page contentType="text/html; charset=GBK" %> 

<%@ page import="java.util.*" %> 

<html><head><title>Cluster Test</title></head> 

<body> 

<% 

//HttpSession session = request.getSession(true); 

System.out.println(session.getId());

out.println("<br> SESSION ID:" + session.getId()+"<br>");

%>

</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应用服务器的名称。