Tomcat基于memcached会话共享

安装两台memcache,基于tomcat做会话同步;(只对动态内容缓存,用于追踪用户会话)

前提:
两个tomcat节点:172.16.100.7(tomcatA.magedu.com),172.16.100.8(tomcatB.magedu.com)
两个memcached节点:172.16.100.9, 172.16.100.10
一个负载均衡节点:172.16.100.6

Tomcat基于memcached会话共享
两台安装完tomcat,再yum安装memcached即可;下面这个memcached项目就是为了tomcat增加一个新的会话管理器:放在tomcat的lib下即可;注意memcached要和你的tomcat版本一致;

memcached-session-manager项目地址:https://github.com/magro/memcached-session-manager

    memcached配置文件:/etc/sysconfig/memcached  建议修改缓存空间大小CACHESIZE,M为单位

教室环境下下载安装包,lftp 172.18.0.1:/pub/Sources/7.x86_64/msm> mget * 其他环境参考上述GitHub网站下载
现在两台tomcat版本都为7,所以删除掉不需要的memcached依赖包:rm -rf memcached-session-manager-tc8-1.8.3.jar
然后将几类包放置到tomcat对应的lib相关目录下:mv *.jar /usr/share/tomcat/lib
随后修改tomcat配置文件,添加在Host上下文中:

分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示(修改对应参数,如docBase路径,n1和n2地址):

<Context path=”/test” docBase=”/usr/share/tomcat/webapps/test” reloadable=”true”>
              <Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”
                memcachedNodes=”n1:172.16.100.9:11211,n2:172.16.100.10:11211″
                failoverNodes=”n1″
                requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$”
                transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory”
              />
             </Context>


分别为两个context提供测试页面:

tomcatA:
mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
vim /usr/share/tomcat/webapps/test/index.jsp   

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

上述为tomcat1,tomcat2节点和memcached2与上述安装配置基本一致,就/usr/share/tomcat/webapps/test/index.jsp页面信息有些改变:

<%@ page language=”java” %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color=”blue”>TomcatB.magedu.com</font></h1>
    <table align=”centre” border=”1″>
      <tr>
        <td>Session ID</td>
    <% session.setAttribute(“magedu.com”,”magedu.com”); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

最后在172.16.100.6的nginx上配置反向代理的负载均衡内容即可,测试访问:

Tomcat基于memcached会话共享

Tomcat基于memcached会话共享注意会话内容是一致;




原创文章,作者:杜少星,如若转载,请注明出处:http://www.178linux.com/76838

(1)
杜少星杜少星
上一篇 2017-05-25 09:42
下一篇 2017-05-25 13:18

相关推荐

  • shell脚本编程初步–吐血整理

    shell脚本编程 编程基础 程序: 程序的构成:指令 + 数据 程序的编程风格:     过程式:以指令为中心,数据服务于指令     对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 shell,perl,python语言均为高级编程语言 编程的逻辑处理方式: &n…

    Linux干货 2016-08-18
  • 课堂练习及课后作业(0805文本处理工具)

    课堂练习: 1、找出ifconfig命令结果中本机的所有IPv4地址 2、查出分区空间使用率的最大百分比值 3、查出用户UID最大值的用户名、UID及shell类型 4、查出/tmp的权限,以数字方式显示 5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序 grep 1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式…

    Linux干货 2016-08-07
  • linux中for的用法

    关于linuxbash shell中的for语句 在linux中shell是必不可少的一部分,但是在bash shell中有while,for,until等循环命令,今天就介绍一下关于for的一些用法。文中任何错误希望大佬们一一指出,不胜感激。 bashshell中提供了for命令,用于创建通过一系列值重复的循环,每次重复使用系列中的一个值执行一个定义的命令…

    2017-07-15
  • 使用Storm实现实时大数据分析

    摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战。Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Storm进行实时大数据分析。CSDN在此编译、整理。 简单和明了,Storm让大数据分析变得轻松加愉快。 当今世界,公司的日常运营经常会生成TB级别的数据。数据来源…

    Linux干货 2015-04-04
  • 0805文本处理工具

    文本处理工具 查看文本文件     文件内容:less和cat            文件截取:head和tail       &…

    Linux干货 2016-08-07
  • 字段分隔符和迭代器

        内部字段分隔符(Internal Field Separator)是shell脚本编程中的一个重要概念。在处理文本数据时,有很大的作用。内部字段分隔符是用于特定用途的定界符,IFS是存储定界符的环境变量,它是当前shell环境中使用的默认定界符字符串。     例一:da…

    Linux干货 2016-08-15