Memcached + MSM 实现Tomcat Session保持

Memcached + MSM 实现Tomcat Session保持


tomcat memcached

前言

上篇文章我们实现了session stickysession cluster实现用户session的保持, 这篇文章主要介绍使用Memcached + MSM来实现用户session的保持

Memcached介绍

Memcached是一款免费、开源、分布式的内存对象缓存系统, 用于减少数据库的负载, 加快web应用程序的访问. Memcached简单并且强大, 其简单的设计加快了部署, 易于开发, 缓存解决了面临的大量数据时很多的问题

官方站点: http://memcached.org/

MSM介绍

MSM(memcached session manager), MSM是一款实现Tomcat会话保持的管理组件, 支持粘性和无粘性的配置, 目前可以在Tomcat6,7,8中使用, 并且支持Memcached会话故障转移

GitHub https://github.com/magro/memcached-session-manager

实验拓扑

blob.png

实验环境

由于我们虚拟机数量不够, 所以MemcachedTomcat运行在同一节点

主机 IP 功用
node1.anyisalin.com 172.16.1.2 Nginx
node2.anyisalin.com 172.16.1.3 TomcatA,Memcached Node
node3.anyisalin.com 172.16.1.4 TomcatB,Memcached Node

实验步骤

安装配置Tomcat

我们首先配置Tomcat, 安装过程这里不做叙述, 不明白的可以看我上篇博客: tomcat基础进阶

安装Tomcatnode2,3都要操作

[root@node1 ~]# [root@node1 ~]# wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz
[root@node1 ~]# tar xf apache-tomcat-8.0.33.tar.gz  -C /usr/local/
[root@node1 ~]# cd /usr/local ; ln -sv apache-tomcat-8.0.33 tomcat ; cd ~
[root@node1 ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.rpm #如果下载出错, 使用浏览器下载
[root@node1 ~]# rpm -ivh jdk-8u77-linux-x64.rpm   #安装JDK

[root@node1 ~]# vim /etc/profile.d/java.sh     #定义JAVA_HOME
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin
:$PATH

[root@node1 ~]# vim /etc/profile.d/tomcat.sh    #配置tomcat的环境变量
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin
:$PATH

[root@node1 ~]# source /etc/profile.d/tomcat.sh
[root@node1 ~]# source /etc/profile.d/java.sh

配置虚拟主机

[root@node2 ~]# vim /usr/local/tomcat/conf/server.xml   

#设置默认虚拟主机为web1.anyisalin.com #node3的jvmRoute设置为TomcatB
<Engine name="Catalina" defaultHost="web1.anyisalin.com" jvmRoute="TomcatA">  


#添加虚拟主机
<Host name="web1.anyisalin.com" appBase="/data/webapps/" unpackWARS="true" autoDeploy="true">
  <Context path="" docBase="/data/webapps" reloadable="true" />
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
       prefix="web1_access_log." suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

[root@node2 ~]# mkdir -PV /data
/webapps/{WEB-INF,META-INF,classes,lib}  #创建目录

node2创建网页文件

[root@node2 ~]# cd /data/webapps/

[root@node2 ~]# vim 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>

[root@node2 webapps]# catalina.sh start #启动tomcat

node3创建网页文件

[root@node3 ~]# cd /data/webapps/

[root@node3 ~]# vim 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>

[root@node3 webapps]# catalina.sh start #启动tomcat

访问测试

blob.png

blob.png

安装配置Nginx负载均衡

安装nginx

在node1上安装配置
[root@node1 ~]# yum install nginx -y  #确保有epel源

配置nginx

[root@node1 ~]# vim /etc/nginx/conf.d/default.conf  #修改以下字段
   upstream tmcat_server {
       server 172.16.1.3:8080;
       server 172.16.1.4:8080;
   }

   location / {
       proxy_pass http://tmcat_server;
   }

[root@node1 ~]# service nginx start  #启动nginx

测试负载均衡效果

Memcached + MSM 实现Tomcat Session保持

安装配置Memcached + MSM

下面所有操作在node2,node3都需要执行

安装Memcached

[root@node2 ~]# yum install memcached -y     #在node2上安装memcached
[root@node3 ~]# yum install memcached -y     #在node3上安装memcached

下载MSM的类库文件到/usr/local/tomcat/lib 下载地址

[root@node2 ~]# cd /usr/local/tomcat/lib/        

##我这里本地已经有这些文件了
[root@node2 ~]# mv javolution-5.5.1.jar memcached-session-manager-tc7-1.8.2.jar memcached-session-manager-1.8.2.jar spymemcached-2.10.2.jar msm-javolution-serializer-1.8.2.jar /usr/local/tomcat/lib/

编辑tomcat配置文件

<Host>下的<Context> 中添加下面这些字段
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
     memcachedNodes="n1:172.16.1.3:11211,n2:172.16.2.4:11211"
     failoverNodes="n2"
     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
      transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>

启动Memcached重启Tomcat并验证

[root@node2 ~]# service memcached start
[root@node2 ]# catalina.sh stop
[root@node2 ]# catalina.sh start

[root@node3 ~]# service memcached start
[root@node3 ]# catalina.sh stop
[root@node3 ]# catalina.sh start

测试

看!我们通过MSM实现了session的绑定

Memcached + MSM 实现Tomcat Session保持

总结

本文主要介绍了通过MSM实现session server从而使客户端能够保持session, 总的来说还是很简单的, 毕竟Memcached配置简单, 但是要理解其中的原理还需要下一番功夫.

作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~ 
作者: AnyISaIln QQ: 1449472454 
感谢: MageEdu

原创文章,作者:Net18-AnyISalIn,如若转载,请注明出处:http://www.178linux.com/15232

(0)
Net18-AnyISalInNet18-AnyISalIn
上一篇 2016-04-22 15:44
下一篇 2016-04-24 16:37

相关推荐

  • LInux用户和组管理详解

    一、用户和组的概念 Linux系统是多任务、多用户的分时操作系统。用户要使用系统资源,需要向管理员验证身份,由管理员进行认证和授权,并对用户的行为进行追踪和审计,以保障系统资源的合理分配以及系统的安全。 要达到账号管理的目的,需要对用户和用户组进行管理。下面分别来介绍用户管理和用户组管理。 每个用户都有唯一的一个编号来标识,这个标识号叫Uid,每个用户至少属…

    Linux干货 2016-08-02
  • 0809vim编辑器作业

    1、如何设置tab缩进为4个字符? :set tabstop=4 首先在命令扩展模式下列出所以set设置的相关选项set all  找到一个跟tab相关的选项,上网查了下意思,tabstop表示的意思就是制表为,他的默认值设置的为8,我们目的是4,那么在命令扩展模式下设置:set tabstop=4就OK了 2、复制/etc/rc.d/init.d…

    Linux干货 2016-08-09
  • Linux文本处理三剑客之一sed

    这周我们学习了文本处理工具三剑客之一的sed,对于之前学的grep同样的重要,也同样是一个难点。sed是针对一个文件或者多个文件一行一行处理的,它处理的时候,把当前处理的行存储在模式空间,处理完成后,把缓冲区内容输出到屏幕上,接着处理下一行。直到文件末尾。原文件并没有经过更改。 1、sed一些常用的选项     -n …

    2017-08-26
  • 网络的冰山一角

        这周我们学习了网络管理,每一天进度特别快,上课认真听了,但是感觉也只能听懂一半。所以我决定把网络管理作为这周博客写一写,这样相当于又复习了一边,能加深印象。 一、用户应用程序对网络的影响     1、批处理应用程序:无需直接人工交互,宽带很重要,但是并非关键性因素。 &n…

    2017-09-04
  • find用法及德·摩根定律

    德·摩根定律   奥古斯都·德·摩根首先发现了在逻辑命题中存在着下面这些关系:      非(P且Q)=非P或非Q      非(P或Q)=非P且非Q 上述逻辑命题可以解释为:    not ( P and Q)=not P or not Q    …

    Linux干货 2016-08-18
  • Btrfs文件系统的管理

    BTRFS文件系统 核心特性 支持将多个底层物理设备组合成同一个设备使用,即多物理卷支持。btrfs可由多个底层物理卷组成:支持RAID,以连击“添加”、“移除”、“修改” 写时复制,在修改文件时,先将文件复制一份,然后在新文件上进行修改,最后将文件名的指针指向新文件,所以原文件还是存在的。 数据及元数据校验码:checksum 子卷:在一个卷上创建子卷,每…

    Linux干货 2016-07-16

评论列表(1条)