基于Memcached的session server

  • session server:将Tomcat的session信息保存在Memcached中,实现session server

    • 前提:

      • 两个Tomcat节点,两个Memcached节点,一个nginx节点;Tomcat需要使用到Memcached-session-manager这个Java类,即上面所说的调用了Memcached提供的API的模块,以达到Memcached通信的目的
      • Add memcached-session-manager jars to tomcat:

        • Memcached-session-manager项目下载地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration;下载如下jar文件至各Tomcat节点的$CATALINA_HOME/lib目录中,其中的memcached-session-manager-${version}.jar的版本号和Tomcat的版本号是两码事,它的${version}要和memcached-session-manager-tc${6,7,8}-${version}.jar中的${version}一致,tc${6,7,8}对应Tomcat版本号
        • Independent of the chosen serialization strategy you always need the memcached-session-manager-${version}.jar and either memcached-session-manager-tc6-${version}.jar for tomcat6, memcached-session-manager-tc7-${version}.jar for tomcat7 (attention: tomcat 7.0.23+), memcached-session-manager-tc8-${version}.jar for tomcat8 or memcached-session-manager-tc9-${version}.jar for tomcat9.
        • If you're using memcached, you also need the spymemcached-${version}.jar. Tested up to v2.12.3.
        • msm-javolution-serializer-${version}.jar序列化工具
        • Please download the appropriate jars and put them in $CATALINA_HOME/lib/

 

  • 分别在两个Tomcat上的某host中的context容器中创建会话管理器,如下所示:

    • <Context path=”/NAME1” docBase=”/usr/local/tomcat/webapps/NAME2” reloadable=”true”> 这里注意NAME1和NAME2不能相同,而且docBase还需要是绝对路径

<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”

memcachedNodes=”n1:172.16.8.93:11211,n2172.16.8.94:11211” 实现Tomcat和后端的两个memcached节点通信,当Tomcat将缓存存到一个节点后,自动将副本复制到另外一个节点

failoverNodes=”n1” 指明n1为备用节点

requestUriIgnorePattern=”.*\.(ico|png|gif|jpg|css|js)$” 忽略这些结尾的URL,不以缓存

transcoderFactoryClass=”de.javakaffee.web.msm.serializer.javolution.JavolutionTranscodeFactory” /> 指定序列化工具

</Context>

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

    • # mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
    • # vim /usr/local/tomcat/webapps/test/index.jsp,添加如下内容:

<%@ page language="java" %>

<html>

  <head><title>TomcatA | TomcatB</title></head>

  <body>

    <h1><font color="{red | bule}">{TomcatA | 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>

  • nginx中的配置:

    • vim /etc/nginx/nginx.conf

http {

upstream tservers {

       server 172.16.8.93:8080 weight=2;

       server 172.16.8.94:8080 weight=3;

    }

}

  • vim /etc/nginx/conf.d/tomcat.conf

server {

        listen 80;

        location ~* \.(jsp|do)$ {

                proxy_pass http://tservers;

        }

}

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/93920

(0)
DPingDPing
上一篇 2018-03-31 14:28
下一篇 2018-03-31 14:51

相关推荐

  • Linux系统计划任务

    在生活、生产环境中,我们可能遇到这样的场景,想在某个时刻,或者固定某个时间周期的在Linux系统中执行某项任务,例如,定时关机,定期自动清理垃圾文件等,at,crontab等命令就是帮你实现这样功能的。

    2018-05-06
  • 小白的随堂笔记(重定向,管道,用户和组,文本工具)

    重定向 把输出和错误输出定向到新文件中 c 操作符号 /> 标准输出重定向 把标准输出重定向到文件(可覆盖原有文件) 2> 错误输出重定向 把错误输出重定向到文件(可覆盖原有文件) &> 把所有输出重定向到文件 >> 所有内容基础上,追加内容 2>> 追加重定向错误输出数据流 &>> 追加…

    2018-04-08
  • linux入门命令

    bc:计算器 mainframe 缓存查看:lscpu磁盘和内存性能测试命令: dd Xmanager (xshell) 安装:用户名: byg公司: microsoft注册码: 使用工具生成 命令库调用: # ldd /bin/ls系统库跟踪,调用库详细信息 # strace lslibrary 库跟踪 # ltrace ls 二进制文件查看: # hex…

    Linux笔记 2018-07-21
  • shell脚本:判断,循环及数组切片

    条件判断:case语句case 变量引用 inPAT1);;PAT2);;…*)默认分支;;esaccase支持glob风格的通配符:*: 任意长度任意字符?: 任意单个字符[]:指定范围内的任意单个字符a|b: a或babc|efg : abc或efg 循环:while 的特殊用法:while read LINE;dofile=/path/to…

    Linux笔记 2018-05-15
  • 文件实时查找工具-find

    find:命令 实时查找工具,通过遍历指定路径完成文件查找 工作特点:查找速度慢,精确查找,实时查找,可能只搜索用户具备读取和执行的目录 用法:  find【OPTION]…[查找路径】【查找条件】【处理动作】 查找路径:指定具体目标路径;默认为当前目录查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文…

    2018-04-13