Memcached + MSM 实现Tomcat Session保持
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都要操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# # wget http://mirrors.cnnic.cn/apache/t ... omcat-8.0.33.tar.gz
# tar xf apache-tomcat-8.0.33.tar.gz-C /usr/local/
# cd /usr/local ; ln -sv apache-tomcat-8.0.33 tomcat ; cd ~
# wget http://download.oracle.com/otn-p ... -8u77-linux-x64.rpm #如果下载出错, 使用浏览器下载
# rpm -ivh jdk-8u77-linux-x64.rpm #安装JDK
# vim /etc/profile.d/java.sh #定义JAVA_HOME
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
# vim /etc/profile.d/tomcat.sh #配置tomcat的环境变量
export CATALINA_BASE=/usr/local/tomcat
export PATH=$CATALINA_BASE/bin:$PATH
# source /etc/profile.d/tomcat.sh
# source /etc/profile.d/java.sh
配置虚拟主机
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# vim /usr/local/tomcat/conf/server.xml
#设置默认虚拟主机为web1.anyisalin.com #node3的jvmRoute设置为TomcatB
#添加虚拟主机
<valve classname="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="web1_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
# mkdir -PV /data/webapps/{WEB-INF,META-INF,classes,lib}#创建目录
node2创建网页文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# cd /data/webapps/
# vim index.jsp#创建网页文件
<%@ page language="java" %>
TomcatA
TomcatA.magedu.com
<% session.setAttribute("magedu.com","magedu.com"); %>
Session ID<%= session.getId() %>
Created on<%= session.getCreationTime() %>
# catalina.sh start #启动tomcat
node3创建网页文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# cd /data/webapps/
# vim index.jsp#创建网页文件
<%@ page language="java" %>
TomcatB
TomcatB.magedu.com
<% session.setAttribute("magedu.com","magedu.com"); %>
Session ID<%= session.getId() %>
Created on<%= session.getCreationTime() %>
# catalina.sh start #启动tomcat
访问测试
安装配置Nginx负载均衡安装nginx
1
2
在node1上安装配置
# yum install nginx -y#确保有epel源
配置nginx
1
2
3
4
5
6
7
8
9
10
11
# 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;
}
# service nginx start#启动nginx
测试负载均衡效果
安装配置Memcached + MSM下面所有操作在node2,node3都需要执行安装Memcached
1
2
# yum install memcached -y #在node2上安装memcached
# yum install memcached -y #在node3上安装memcached
下载MSM的类库文件到/usr/local/tomcat/lib 下载地址
1
2
3
4
# cd /usr/local/tomcat/lib/
##我这里本地已经有这些文件了
# 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配置文件
1
2
3
4
5
6
7
在下的 中添加下面这些字段
<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并验证
1
2
3
4
5
6
7
# service memcached start
# catalina.sh stop
# catalina.sh start
# service memcached start
# catalina.sh stop
# catalina.sh start
测试看!我们通过MSM实现了session的绑定
页:
[1]