阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Memcached实现Tomcat集群Session共享

189次阅读
没有评论

共计 3066 个字符,预计需要花费 8 分钟才能阅读完成。

环境 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>

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

使用 Memcached 实现 Tomcat 集群 Session 共享

自定义了一台虚拟主机:<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:

使用 Memcached 实现 Tomcat 集群 Session 共享

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>

贴个图:

使用 Memcached 实现 Tomcat 集群 Session 共享

下载如下几个包: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/ 目录下(注意上面几个包不要下错了,这又是个潜在的坑)

使用 Memcached 实现 Tomcat 集群 Session 共享

这几个包的版本一定要对,我在这踩了一天的坑,如果你的是 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,去浏览器验证

使用 Memcached 实现 Tomcat 集群 Session 共享

使用 Memcached 实现 Tomcat 集群 Session 共享 

验证成功,Session ID 保持一样。

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-05/131688.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3066字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中