NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享

TOMCAT7.0+ NGINX + MEMCACHED + memcached-session-manager 实现SESSION共享)
 2、环境:
     host1:192.168.163.189/24 tomcat189
     host2:192.168.163.190/24 tomcat190
     host3:192.168.163.191/24 nginx
     host3:192.168.163.191/24 memcached
参考文档;https://code.google.com/p/memcached-session-manager/
 memcached-session-manager版本:1.8.1
 1、安装及配置NGINX,其中NGINX配置如测试一
 2、下载memcached-session-manager相关组件(选用 效率最高的msm-javolution-serializer序列算法)
   对应软件包及下载地址;
     javolution-5.4.3.1.jar 
     http://memcached-session-manager.googlecode.com/svn/maven/javolution/javolution/


     memcached-session-manager-1.8.1.jar
     http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/


     memcached-session-manager-tc7-1.8.1.jar  http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc7/


     msm-javolution-serializer-1.8.1.jar
     http://repo1.maven.org/maven2/de/javakaffee/msm/msm-javolution-serializer/


     spymemcached-2.10.2.jar
     http://repo1.maven.org/maven2/net/spy/spymemcached/


 3、将下载的软件包放到$TOMCAT_HOME/lib 下(TOMCAT所有集群节点都要放)


4、配置NGINX
此集群中NGINX的作用仅用于调度,无其它特殊要求。所以只需配个upstream,server即可,其它的保持默认即可。
upstream  backend{
        server 192.168.163.189:8080 weight=1 ;
        server 192.168.163.190:8080 weight=1;


}
server {
        listen       80;
        server_name  192.168.163.191;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
             proxy_pass  http://backend; 
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    


 4、在$TOMCAT_HOME/conf/context.conf 的<Context>标签下添加如下
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.163.191:11211"
requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sticky="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" 
copyCollectionsForSerialization="false"/>


关于各参数的意思及用法参考:https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration 
 章节Overview over memcached-session-manager configuration attributes


 
 5、在工程的web.xml中如($TOMCAT_HOME/webapps/ROOT/WEB-INF/web.xml)web-app节点中添加如下信息:
   <dependency>
    <groupId>de.javakaffee.msm</groupId>
    <artifactId>msm-javolution-serializer</artifactId>
    <version>1.8.1</version>
    <scope>runtime</scope>
</dependency>


 6、修改$TOMCAT_HOME/conf/server.xml,启有ENGIN标签中的JVMROOT属性,启用的目的就是为了区分SESSION是在哪个节点上生成的,也可不启用。
      <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">




  注意:不同的序列算法有不同artifactId,所用的version也不同,要注意修改


7、新建测试页,将放到工程目录中,如t.jsp
<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ 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>");   
  // 如果有新的请求,则添加session属性 
  String name = request.getParameter("name"); 
  if (name != null && name.length() > 0) { 
     String value = request.getParameter("value"); 
     session.setAttribute(name, value); 
  }   
    out.print("<b>Session List:</b>");   
    Enumeration<String> names = session.getAttributeNames(); 
    while (names.hasMoreElements()) { 
        String sname = names.nextElement();  
        String value = session.getAttribute(sname).toString(); 
        out.println( sname + " = " + value+"<br>"); 
        System.out.println( sname + " = " + value); 
   } 
%> 
</body> 
</html>


8、开启所有TOMCAT,开启时留意其日志catalin.out是否正常;
9、测试步骤
    A:测试直接各节点访问测试页,若能正常显示且显示出SESSIONID值,表示TOMCAT运行正常
    B:关闭所有浏览器,并重新打开一个窗口,测试访问NGINX服务器http://192.168.163.191/t.jsp 显示出一个SESSION ID值。
    C:按F5多刷新几次,看看SESSION ID是否会变化,若不变化,从某种程度认为SESSSION共享是成功 的(留意各节点的TOMCAT日志,每刷新一次,会在被调度到的节点打出日志)。若SESSION ID变化,表示SESSION 共享失败。
    D:关闭 被调度到的节点的TOMCAT,再刷新测试页,若发现页面显示正常,且SESSION ID值不变化,说明SESSION也被调度到另一个节点,查看节点TOMCAT日志,也会打出与看到的SESSION ID一样的记录。此时,基本可以认为SESSION共享是成功的。 
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值