参考:
http://lgdvsehome.blog.51cto.com/3360656/878164
Nginx+Tomcat+Memcached集群Session共享(windows)
1、环境
apache+2个tomcat+memcached服务器
2、具体配置
a)修改apache http server配置文件http.conf,首先load三个model,代码如下:



然后在此配置文件末端加入以下代码(该处配置与前文有些差异):
ProxyPass / balancer://tomcatcluster/
ProxyPassReverse / balancer://tomcatcluster/
<Proxy balancer://tomcatcluster>
BalancerMember ajp://localhost:8009 route=a
BalancerMember ajp://localhost:9009 route=b
</Proxy>
b)接下来修改Tomcat的server.xml文件,如下:





jvmRoute也须同前面的设置一样。
c)再修改Tomcat的context.xml
<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"/>
需要用到的jar包:
memcached-2.6.jar(https://code.google.com/p/spymemcached/downloads/detail?name=spymemcached-2.8.4.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中都可以找到。
d)安装memcached服务器,参见
http://blog.csdn.net/shuzui1985/article/details/7907889
3、编写测试代码
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>");
if(session.getAttribute("jhy") != null){
out.println("<br> SESSION attribute:" + session.getAttribute("jhy")+"<br>");
String str = "+";
session.setAttribute("jhy",session.getAttribute("jhy")+str);
}else{
session.setAttribute("jhy","test");
out.println("<br> SESSION attribute set!" +"<br>");
}
%>
</body>
</html>
4、测试。
第一次访问,返回显示session中属性为空,进行属性设置,同时n1表示session在memcached服务器上的节点,b为tomcat服务器节点。
紧接着关闭b服务器,就是默认的第二个自定义服务器myTomcat6.
继续访问如下图,sessionID前段没有发生变化,只是变成了来自tomat服务器a,但是从session属性中读出了初始设置test
再访问http://localhost/balance,如下图,已经开始累计了。
再开启b服务器,再访问http://localhost/balance,
好了,以上的测试结果表明,session已经实现了集群共享,当其中一个服务器宕机了以后,可以实现故障转移。