其中msm-javolution-serializer为一款流式化工具,能够将会话信息转成流式数据存放在memcache上,在读取时再将其还原,类似的工具有很多,在实现过程中可以根据需要选择不同的流式化工具,相关的配置也不同,参考官方文档即可。
实现过程
1)在192.168.1.121,192.168.1.122上安装memcached
[root@node1 ~]# tar xf libevent-2.0.21-stable.tar.gz
[root@node1 ~]# cd libevent-2.0.21
[root@node1 ~]# ./configure --prefix=/usr/local/libevent
[root@node1 ~]# make && make install
[root@node1 ~]# echo "/usr/local/libevent/lib" > /etc/ld.so.conf.d/libevent.conf
[root@node1 ~]# ldconfig
#####################################################
[root@node1 ~]# tar xf memcached-1.4.15.tar.gz
[root@node1 ~]# cd memcached-1.4.15
[root@node1 ~]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
[root@node1 ~]# make && make install
为memcached提供服务脚本,并配置为系统服务(脚本可以copy得到)
[root@node1 ~]# chmod +x /etc/init.d/memcached
[root@node1 ~]# chkconfig --add memcached
[root@node1 ~]# service memcached start
2)在tomcat node1和node2节点上添加虚拟主机(会话无粘性的模式下):
[root@node1 ~]# vim /usr/local/tomcat/conf/server.xml
........
<Host appBase="/tomcat/webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/web" docBase="web" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.121:11211,n2:192.168.1.122:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="uriPattern:/path1|/path2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>
</Host>
会话有粘性的模式下:
[root@node1 ~]# vim /usr/local/tomcat/conf/server.xml
........
<Host appBase="/tomcat/webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/web" docBase="web" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.1.121:11211,n2:192.168.1.122:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
</Context>
</Host>
memcachedNodes指定后端的memcache服务器地址和端口,这里使用了两个memcache服务器,目的是起到高可用的作用。在保存session信息时需要同时写到两个memcache服务器上。
3)将需要的jar文件(类库)复制到tomcat的lib目录下:
[root@node1 msm]# ls
javolution-5.5.1.jar memcached-session-manager-tc7-1.8.2.jar spymemcached-2.10.2.jar
memcached-session-manager-1.8.2.jar msm-javolution-serializer-1.8.2.jar
[root@node1 msm]# cp ./* /usr/local/tomcat/lib/
复制到另外一个节点:
[root@node1 msm]# scp ./* 192.168.1.127:/usr/local/tomcat/lib/
然后重启两个节点上的tomcat服务:
[root@node1 ~]# service tomcat restart
利用上一个案例配置的负载均衡和添加的测试页面进行测试,测试结果与上述一致。.................^_^
更多Tomcat相关教程见以下内容:
CentOS 6.6下安装配置Tomcat环境
RedHat Linux 5.5安装JDK+Tomcat并部署Java项目
Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案