您的位置:首页 > 数据库 > Memcache

Memcached + MSM 实现Tomcat Session保持

2016-04-22 17:58 706 查看

Memcached + MSM 实现Tomcat Session保持

tomcat
memcached
大纲
前言
Memcached介绍
MSM介绍
实验拓扑
实验环境
实验步骤安装配置Tomcat
安装配置Nginx负载均衡
安装配置Memcached + MSM

总结

前言

上篇文章我们实现了
session sticky
session 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

实验拓扑


实验环境

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


主机IP功用
node1.anyisalin.com172.16.1.2Nginx
node2.anyisalin.com172.16.1.3TomcatA,Memcached Node
node3.anyisalin.com172.16.1.4TomcatB,Memcached Node

实验步骤

安装配置Tomcat

我们首先配置
Tomcat
, 安装过程这里不做叙述, 不明白的可以看我上篇博客: tomcat基础进阶安装
Tomcat
node2,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 "%r" %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

访问测试




安装配置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

下面所有操作在
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
的绑定

总结

本文主要介绍了通过
MSM
实现
session server
从而使客户端能够保持
session
, 总的来说还是很简单的, 毕竟
Memcached
配置简单, 但是要理解其中的原理还需要下一番功夫.作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~
作者: AnyISaIln QQ: 1449472454
感谢: MageEdu
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息