zoukankan      html  css  js  c++  java
  • 使用memcached实现tomcat集群session共享

    环境centos6.7,下载安装必要的软件:yum -y install epel-release(tomcat7在此源上,tomcat7是现在主流版本)

    yum -y install tomcat  直接下载tomcat7,   yum -y install java-1.7.0-openjdk-devel (tomcat需要运行在java虚拟机上)

    vim /etc/tomcat/server.xml   修改配置文件

          <Host name="web.com"  appBase="/data/webapps/"
                unpackWARs="true" autoDeploy="true">
          <Context path="" docBase="/data/webapps" reloadable="true" >
            <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
            memcachedNodes="n1:192.168.238.250:11211,n2:192.168.238.251:11211"
            failoverNodes="n2"
            requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"
            transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
          </Context>
          </Host>

    上面的字自己都看不清还是贴个图吧

    自定义了一台虚拟主机:<Host name="web.com"  appBase="/data/webapps/" unpackWARs="true" autoDeploy="true">

    在此虚拟主机上添加了Context:<Context path="" docBase="/data/webapps" reloadable="true" >

    关键是manager这段:

      为manager取个全局唯一名字:<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

      定义有哪些memcached服务器节点:memcachedNodes="n1:192.168.238.250:11211,n2:192.168.238.251:11211"

      定义备用节点:failoverNodes="n2"

      对那些请求url忽略:requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"

      固定格式:transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>

      

    把默认虚拟主机定义为web.com:

    JvmRoute="TomcatA" 是在请求web.com的session id中添加JvmRoute="TomcatA",此实验中可不用添加

    创建页面资源:mkdir -p /data/webapps/{WEB-INF,classes,lib}    cd /data/webapps/  vim index.jsp

    jsp页面资源如下

    <%@ page language="java" %>
    <html>
      <head><title>TomcatA</title></head>
      <body>
        <h1><font color="red">TomcatA.test</font></h1>
        <table align="centre" border="1">
          <tr>
            <td>Session ID</td>
        <% session.setAttribute("test","test"); %>
            <td><%= session.getId() %></td>
          </tr>
          <tr>
            <td>Created on</td>
            <td><%= session.getCreationTime() %></td>
         </tr>
        </table>
      </body>
    </html>

    贴个图:

    下载如下几个包:javolution-5.5.1   memcached-session-manager-1.8.2   memcached-session-manager-tc7-1.8.2

    msm-javolution-serializer-1.8.2  spymemcached-2.10.2    这几个包作用:java通过memcached实现session管理

    上面这几个包的下载地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

    把上面几个包放在/usr/share/tomcat/lib/ 目录下 (注意上面几个包不要下错了,这又是个潜在的坑)

    这几个包的版本一定要对,我在这踩了一天的坑,如果你的是tomcat8,对应的memcached-session-manager-tc8-1.8.2

    两台memcached各自放在两台tomcat上,使用yum -y install memcached下载就行了

    把上面的步骤在tomcatA上的步骤,在tomcatB上执行一遍,tomcatB上的jsp页面资源中的TomcatA改为TomcatB,red改为blue

    前端再架设一台Nginx实现负载均衡,启动memcached,启动tomcat,启动Nginx,去浏览器验证

    验证成功,Session ID保持一样

  • 相关阅读:
    M1卡的工作原理【转】
    磁卡ID卡IC卡的区别【转】
    磁卡结构【转】
    M1卡破解(自从学校升级系统之后,还准备在研究下)【转】
    RunJS演示代码
    Linux中inet_aton的问题(IP转整数)
    使用Hive UDF和GeoIP库为Hive加入IP识别功能
    hive下UDF函数的使用
    linux下smb
    使用Spring MVC表单标(转)
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5497774.html
Copyright © 2011-2022 走看看