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保持一样

  • 相关阅读:
    Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)
    Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker(数学)
    Educational Codeforces Round 88 (Rated for Div. 2) E. Modular Stability(数论)
    Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water(数学/二分)
    Codeforces Round #644 (Div. 3)
    Educational Codeforces Round 76 (Rated for Div. 2)
    Educational Codeforces Round 77 (Rated for Div. 2)
    Educational Codeforces Round 87 (Rated for Div. 2)
    AtCoder Beginner Contest 168
    Codeforces Round #643 (Div. 2)
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5497774.html
Copyright © 2011-2022 走看看