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
会话故障转移
实验拓扑
实验环境
由于我们虚拟机数量不够, 所以Memcached
和Tomcat
运行在同一节点
主机 | 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基础进阶
安装Tomcat
,node2,3
都要操作
[[email protected] ~]# [[email protected] ~]# wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.33/bin/apache-tomcat-8.0.33.tar.gz [[email protected] ~]# tar xf apache-tomcat-8.0.33.tar.gz -C /usr/local/ [[email protected] ~]# cd /usr/local ; ln -sv apache-tomcat-8.0.33 tomcat ; cd ~ [[email protected] ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u77-b03/jdk-8u77-linux-x64.rpm #如果下载出错, 使用浏览器下载 [[email protected] ~]# rpm -ivh jdk-8u77-linux-x64.rpm #安装JDK [[email protected] ~]# vim /etc/profile.d/java.sh #定义JAVA_HOME export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin:$PATH [[email protected] ~]# vim /etc/profile.d/tomcat.sh #配置tomcat的环境变量 export CATALINA_BASE=/usr/local/tomcat export PATH=$CATALINA_BASE/bin:$PATH [[email protected] ~]# source /etc/profile.d/tomcat.sh [[email protected] ~]# source /etc/profile.d/java.sh
配置虚拟主机
[[email protected] ~]# 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> [[email protected] ~]# mkdir -PV /data/webapps/{WEB-INF,META-INF,classes,lib} #创建目录
node2
创建网页文件
[[email protected] ~]# cd /data/webapps/ [[email protected] ~]# 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> [[email protected] webapps]# catalina.sh start #启动tomcat
node3
创建网页文件
[[email protected] ~]# cd /data/webapps/ [[email protected] ~]# 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> [[email protected] webapps]# catalina.sh start #启动tomcat
访问测试
安装配置Nginx负载均衡
安装nginx
在node1上安装配置 [[email protected] ~]# yum install nginx -y #确保有epel源
配置nginx
[[email protected] ~]# 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; } [[email protected] ~]# service nginx start #启动nginx
测试负载均衡效果
安装配置Memcached + MSM
下面所有操作在node2,node3
都需要执行
安装Memcached
[[email protected] ~]# yum install memcached -y #在node2上安装memcached [[email protected] ~]# yum install memcached -y #在node3上安装memcached
下载MSM
的类库文件到/usr/local/tomcat/lib
下载地址
[[email protected] ~]# cd /usr/local/tomcat/lib/ ##我这里本地已经有这些文件了 [[email protected] ~]# 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
并验证
[[email protected] ~]# service memcached start [[email protected] ]# catalina.sh stop [[email protected] ]# catalina.sh start [[email protected] ~]# service memcached start [[email protected] ]# catalina.sh stop [[email protected] ]# catalina.sh start
测试
看!我们通过
MSM
实现了session
的绑定
总结
本文主要介绍了通过
MSM
实现session server
从而使客户端能够保持session
, 总的来说还是很简单的, 毕竟Memcached
配置简单, 但是要理解其中的原理还需要下一番功夫.作者水平很低, 如果有错误及时指出, 如果你觉得本文写的好请点一波赞~(≧▽≦)/~
作者: AnyISaIln QQ: 1449472454
感谢: MageEdu