更多Tomcat相关教程见以下内容:
Tomcat服务器搭建实验(4)
6.实现session会话保持到memcache服务器
要想将会话保存至后端memcache中,并且每个memcache都保存相同的会话,需要一个管理项目memcached-session-manager,项目地址:https://github.com/magro/memcached-session-manager,找到SetupAndConfiguration wiki page.并点击进去。其中
在Add memcached-session-manager jars to tomcat处下载(根据所需进行下载)
下载.jar文件至各tomcat的/usr/share/tomcat/lib/目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要选与tomcat版本相同的版本号。
memcached-session-manager-2.1.1.jar
memcached-session-manager-tc7-2.1.1.jar ##要根据tomcat的版本,实验时是7版本,所以这里要下载tc7
spymemcached-2.9.1.jar
在Add custom serializers to your webapp (optional)处下载(根据所需进行下载)
这里下载的是kryo-serializer,有如下jar文件需要下载
msm-kryo-serializer-2.1.1.jar
kryo-serializers-0.42.jar
kryo-4.0.1.jar
minlog-1.3.0.jar
reflectasm-1.11.3-shaded.jar
reflectasm-1.11.3.jar
asm-5.2.jar
objenesis-2.6.jar
实现过程如下
1、在director上实现nginx或者httpd的反向代理至tomcat集群,本实验用的是httpd
vim /etc/httpd/conf.d/tomcat.conf
<proxy balancer://tomcatsrvs>
BalancerMember http://172.18.213.251:8080
BalancerMember http://172.18.213.254:8080
ProxySet lbmethod=byrequests
</Proxy>
namevirtualhost *:80
<VirtualHost *:80>
documentroot /app
<directory /app>
Require all granted
</directory>
ProxyVia On
ProxyRequests Off
ProxyPass / balancer://tomcatsrvs/
ProxyPassReverse / balancer://tomcatsrvs/
</VirtualHost>
service httpd start
2、在两个后端服务器上的设置
安装tomcat和memcache并启动服务
yum install memcached -y
systemctl start memcached
ls /usr/share/tomcat/lib/
##复制.jar文件到此目录
vim /etc/tomcat/server.xml ##将官方文档中的此段内容复制到tomcat的配置文件中
<Context path="/app" docBase="/usr/share/tomcat/webapps/app" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.18.213.254:11211,n2:172.18.213.254:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
</Context>
systemctl restart tomcat
3、测试
安装客户端工具
yum install -y libmemcached ##不安装此软件包无法使用memdump等客户端工具
http://172.18.213.253/app/
##访问发现被调度到不同的tomcat主机,但会话是一样的
memdump --server 172.18.21.107:11211
##此命令可以查看到memcache中缓存的值
systemctl stop memcached
##关闭一台memcached
http://172.18.213.253/app/
##继续访问发现会话仍然不变,说明会话在两台memcache中都缓存了
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://www.heiqu.com/f1be1897643e5a7d37b721c7673b4107.html