apache+多个tomcat+memcached共享session会话(windows篇)

参考:

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,代码如下:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

然后在此配置文件末端加入以下代码(该处配置与前文有些差异):

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文件,如下:

<!-- Define an AJP 1.3 Connector on port 8009  -->
        < Connector port ="8009"
                enableLookups
="false"  redirectPort ="8443"  protocol ="AJP/1.3"  />
其中的port为前面<Proxy>中设定的端口,还要配置其route,代码如下:
<!-- Define the top level container in our container hierarchy -->
        < Engine name ="Catalina" defaultHost ="localhost" jvmRoute ="a" >

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已经实现了集群共享,当其中一个服务器宕机了以后,可以实现故障转移。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值