使用Tomcat实现session共享
- 使用Tomcat实现session共享
- 问题
沿用练习三,通过为在Tomcat上部署msm(memcached-session-manager)实现session会话共享,本案例需要在练习三的基础上实现:
- 客户端访问两台不同的后端Web服务器时,Session ID信息一致
- 方案
在练习三拓扑的基础上,添加两台memcached服务器,并在两台Tomcat服务器上部署msm实现session会话共享。拓扑结构如图-1所示。
图-1
- 步骤
实现此案例需要按照如下步骤进行。
步骤一:构建memcached服务
注意:案例中我们需要部署两台memcached服务器,以下操作以其中一台为例。
1)使用源码安装libevent软件包
[[email protected] ~]# tar -zxvf libevent-2.0.22-stable.tar.gz
[[email protected] ~]# cd libevent-2.0.22-stable
[ro[email protected] libevent-2.0.15-stable]# ./configure
[[email protected] libevent-2.0.15-stable]# make && make install
[[email protected] ~]# echo "/usr/local/lib" > /etc/ld.so.conf.d/libevent.conf
[[email protected] ~]# ldconfig
[[email protected] ~]# ldconfig –v | grep --color libevent
2)使用源码安装memcached软件包
[[email protected] ~]# tar -zxvf memcached-1.4.23.tar.tar
[[email protected] ~]# cd memcached-1.4.23
[[email protected] memcached-1.4.5]# ./configure
[[email protected] memcached-1.4.5]# make && make install
3)启动服务并查看网络连接状态验证是否开启成功:
[[email protected] ~]# bin/memcached -p 11211 \
>-u root -m 100 -c 200 -vvv -n 10 -f 2 -d
slab class 1: chunk size 64 perslab 16384
slab class 2: chunk size 128 perslab 8192
slab class 3: chunk size 256 perslab 4096
slab class 4: chunk size 512 perslab 2048
slab class 5: chunk size 1024 perslab 1024
slab class 6: chunk size 2048 perslab 512
slab class 7: chunk size 4096 perslab 256
slab class 8: chunk size 8192 perslab 128
slab class 9: chunk size 16384 perslab 64
[[email protected] ~]# netstat -anptu | grep memcached
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2839/memcached
tcp 0 0 :::11211 :::* LISTEN 2839/memcached
udp 0 0 0.0.0.0:11211 0.0.0.0:* 2839/memcached
udp 0 0 :::11211 :::* 2839/memcached
步骤二:在Tomcat服务器上部署msm
注意:这些操作在两台后端Web服务器上均需要执行,以下操作以Web1(192.168.4.205)服务器为例。
1)安装msm
[[email protected] session]# ls
asm-5.1.jar kryo-3.0.3.jar minlog-1.3.0.jar
memcached-session-manager-1.9.2.jar reflectasm-1.11.1.jar
kryo-serializers-0.34.jar memcached-session-manager-tc8-1.9.2.jar
msm-kryo-serializer-1.9.2.jar spymemcached-2.11.1.jar
[[email protected] session]# cp *.jar /usr/local/tomcat/lib/
2)修改Tomcat配置文件,连接memcached服务器
[[email protected] ~]# ~]# vim /usr/local/tomcat/conf/context.xml
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes=“tomcatA:192.168.0.10:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
</Context>
[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat/bin/startup.sh
步骤三:客户端测试
客户端使用浏览器访问两台不同的Web服务器。
操作步骤与
使用Tomcat设置Session
一致,最终可以获得相关的Session ID信息。