出门莫恨无人随,书中车马多如簇。这篇文章主要讲述Tomacatsession 共享复制相关的知识,希望能为你提供帮助。
1.msm 介绍
msm(memcached session manager)提供将Tomcat的session保持到memcached或redis的程序,可以实现高可用。项目早期托管在google code,目前在Github
github网站链接: https://github.com/magro/memcached-session-manager
支持Tomcat的 6.x、7.x、8.x、9.x
Tomcat的Session管理类,Tomcat版本不同
Session数据的序列化、反序列化类
【Tomacatsession 共享复制】驱动类
2. sticky 和 non-sticky 两种工作模式
2.1sticky工作模式 sticky工作模式:在Tomcat本机上(t1)存一份session,在后端的session共享器 (memcached或者redis)m2上(一般为交叉节点)也存放一份副本,当m2故障了,新session会被写入到t1 和 m1 上去,同时m2故障发生同时还存活在t1上的session 还会被写到m1 上去。t2接收的session同样的方式被存放和容错。
The following description shows an example for a setup with sticky sessions, with two instances of tomcat and two instances of memcached installed.
Tomcat-1 (t1) will primarily store its sessions in memcached-2 (m2) which is running on another machine (m2 is a regular node for t1). Only if m2 is not available, t1 will store its sessions in memcached-1 (m1, m1 is the failoverNode for t1). With this configuration, sessions wont be lost when machine 1 (serving t1 and m1) crashes. The following really nice ASCII art shows this setup.
<
t1>
<
t2>
. \\ / .
.X.
. / \\ .
<
m1>
<
m2>
#以下是sticky的配置修改 $CATALINA_HOME/conf/context.xml特别注意,tomcat 节点上的修改内容有些差异t1配置中为failoverNodes="n1", t2配置为failoverNodes="n2"
<
Context>
...
<
Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.0.38:11211,n2:172.16.0.48:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFac
tory"
/>
<
/Context>
实践的实验过程中,t1和m1部署可以在一台主机上,t2和m2部署也可以在同一台。
当新用户发请求到Tomcat1时, Tomcat1生成session返回给用户的同时,也会同时发给memcached2备份。即Tomcat1 session为主session,memcached2 session为备用session,使用memcached相当于备份了一份Session;如果Tomcat1发现memcached2 失败,无法备份Session到memcached2,则将Sessoin备份存放在
memcached1中。
# 配置说明
memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
memcached的节点: n1、n2只是别名,可以重新命名。
failoverNodes 为故障转移节点,n1是备用节点,n2是主存储节点。另一台Tomcat将n1改为n2,其主节
点是n1,备用节点是n2。
2.2non-sticky 模式non-sticky 模式即前端tomcat和后端memcached无关联(无粘性)关系
从msm 1.4.0之后版本开始支持non-sticky模式。
Tomcat session为中转Session,对每一个SessionID随机选中后端的memcached节点n1(或者n2)为主session,而另一个memcached节点n2(或者是n1)为备session。产生的新的Session会发送给主、备memcached,并清除本地Session。
后端两个memcached服务器对一个session来说是一个是主,一个是备,但对所有session信息来说每个
memcached即是主同时也是备
如果n1下线,n2则转正。n1再次上线,n2依然是主Session存储节点。
# non-sticky 模式修改 $CATALINA_HOME/conf/context.xmltomcat的节点上的配置修改内容一样
<
Context>
...
<
Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.16.0.38:11211,n2:172.16.0.48:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFac
tory"
/>
<
/Context>
3.需要在$CATALINA_HOME/lib/目录下部署的jar包
参考链接: https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录中去,这个目录是$CATALINA_HOME/lib/ ,对应本次安装就是/usr/local/tomcat/lib。
kryo-3.0.3.jar
asm-5.2.jar
objenesis-2.6.jar
reflectasm-1.11.9.jar
minlog-1.3.1.jar
kryo-serializers-0.45.jar
msm-kryo-serializer-2.3.2.jar
memcached-session-manager-tc8-2.3.2.jar# 这个依据tomcat的版本需要选择不同的jar
spymemcached-2.12.3.jar
memcached-session-manager-2.3.2.jar
4.安装配置
安装调试一般分以下几个主要步骤:
第一步:先配置好前端的反向代理服务器(nginx 、HAPROXY 、HTTPD等都可以);
第二步:配置好几个 tomcat
节点,并与前端的反向代理构建好集群;
第三步:配置session 的持久保存和同步,本文的主要内容就是介绍第三步,详细的教程在下面的官网连接上有详细的介绍。
官方的安装配置教程:
??https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration??
推荐阅读
- 创建子进程
- 4-14 练习题-find
- linux之read命令
- Linux CPU 平均负载和利用率是什么关系()
- 深入理解http1.xhttp 2和https
- NoSQL数据库之Memcached的认识及安装使用
- 使用while循环语句做猜价格游戏
- 监控cpu 内存 根分区使用率
- 简单介绍python中使用正则表达式的方法