服务器session配置文件,tomcat-session共享服务器,msn介绍与安装

session共享服务器

msm

msm(memcached session manager)提供将Tomcat的session保持到memcached或redis的程序,可以实现高可用。

支持Tomcat的6.x、7.x、8.x、9.x

Tomcat的Session管理类,Tomcat版本不同

memcached-session-manager-2.3.2.jar

memcached-session-manager-tc8-2.3.2.jar

Session数据的序列化、反序列化类

官方推荐kyro

在webapp中WEB-INF/lib/下

驱动类

memcached(spymemcached.jar)

Redis(jedis.jar)

安装

将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录中去,这个目录是$CATALINA_HOME/lib/,对应本次安装就是/usr/local/tomcat/lib。

asm-5.2.jar

kryo-3.0.3.jar

kryo-serializers-0.45.jar

memcached-session-manager-2.3.2.jar

memcached-session-manager-tc8-2.3.2.jar

minlog-1.3.1.jar

msm-kryo-serializer-2.3.2.jar

objenesis-2.6.jar

reflectasm-1.11.9.jar

spymemcached-2.12.3.jar

sticky模式

原理

当请求结束时Tomcat的session会送给memcached备份。即Tomcat session为主session,memcached session为备session,使用memcached相当于备份了一份Session。

如果查询Session时Tomcat会优先使用自己内存的Session,Tomcat通过jvmRoute发现不是自己的Session,便从memcached中找到该Session

如果是更新本机Session,请求完成后更新memcached。

部署

. \ / .

. X .

. / \ .

t1和m1部署可以在一台主机上,t2和m2部署也可以在同一台。

配置

放到 $CATALINA_HOME/conf/context.xml中

特别注意,t1配置中为failoverNodes="n1", t2配置为failoverNodes="n2"

以下是sticky的配置

...

memcachedNodes="n1:10.0.0.101:11211,n2:10.0.0.102:11211"

failoverNodes="n1"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"

memcached的节点们;n1、n2只是别名,可以重新命名。

failoverNodes故障转移节点,n1是备用节点,n2是主存储节点。另一台Tomcat将n1改为n2,其主节点是n1,备用节点是n2。

如果配置成功,可以在logs/catalina.out中看到下面的内容

信息 [t1.magedu.com-startStop-1] de.javakaffee.web.msm.MemcachedSessionService.startInternal --------

- finished initialization:

- sticky: true

- operation timeout: 1000

- node ids: [n2]

- failover node ids: [n1]

- storage key prefix: null

- locking mode: null (expiration: 5s)

配置成功后,网页访问以下,页面中看到了Session。然后运行下面的Python程序,就可以看到是否存储到了memcached中了。

范例:安装python环境准备python程序查看memcached中的SessionID

[root@centos8 ~]#dnf install python36 -y

[root@centos8 ~]#pip3 install python-memcached

[root@centos8 ~]#cat showmemcached.py

import memcache # pip install python-memcached

mc = memcache.Client(['10.0.0.101:11211'], debug=True)

stats = mc.get_stats()[0]

print(stats)

for k,v in stats[1].items():

print(k, v)

print('-' * 30)

# 查看全部key

print(mc.get_stats('items')) # stats items 返回 items:5:number 1

print('-' * 30)

print(mc.get_stats('cachedump 5 0')) # stats cachedump 5 0 # 5和上面的items返回的值有关;0表示全部

t1、t2、n1、n2依次启动成功,分别使用http://t1.magedu.org:8080/ 和http://t2.magedu.org:8080/ 观察。

看起负载均衡调度器,通过http://t0.magedu.com来访问看看效果

On tomcats

10.0.0.102:8080

SessionID = 2A19B1EB6D9649C9FED3E7277FDFD470-n2.Tomcat1

Wed Jun 26 16:32:11 CST 2019

On tomcats

10.0.0.101:8080

SessionID = 2A19B1EB6D9649C9FED3E7277FDFD470-n1.Tomcat2

Wed Jun 26 16:32:36 CST 2019

可以看到浏览器端被调度到不同Tomcat上,但是都获得了同样的SessionID。

停止t2、n2看看效果,恢复看看效果。

范例:访问tomcat,查看memcached中SessionID信息

48b984a0effb0032a846ee18ed8ed8c8.png

[root@centos8 ~]#python3 showmemcached.py

.....

[('10.0.0.48:11211 (1)', {'8D0B801640CA0B1EB9AD4A4C221EA81A-n2.Tomcat1': '[97 b; 1581598952 s]'})]

#以上结果表示SessionID来自于memcached的n2节点,但是最终是由tomcat1返回的SessionID

本文链接:http://www.yunweipai.com/35195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值