MemCache在tomcat中的session交叉存放(实现数据共享)

本文介绍了如何在Tomcat中使用MemCache实现session共享,以确保即使单个Tomcat服务断开,用户session也不会丢失。通过在两个Tomcat实例之间交叉存放session数据,当一个服务挂掉时,session数据仍能在另一台服务器的MemCache中找到。配置步骤包括安装MemCache、放置所需库、编辑配置文件、启动服务以及测试故障切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.在tomcat中实现session共享

  • 什么是session:

  • 在计算机中,尤其是在网络应用中,称为“会话控制”。

  • Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web
    页之中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则
    Web服务器将自动创建一个 Session 对象。

  • 当会话过期或被放弃后,服务器将终止该会话。

  • Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。

  • 为什么要使用session

  • 为了对数据的保存更加牢靠,我们选择交叉存放session的方法,即将访问tomcat1上的数据存放在memcache2中,将访问tomcat2上的数据存放在memcache1中,这样存放,当某个tomcat服务断了之后,访问它的客户session并不会消失,而是存放在了对立的memcache,如果存放session的memcache坏了,那么它的数据会立即切换到另一个memcached中。

配置实验如下:

前一篇博客的问题:之前可以实现粘制功能,但是如果在一个用户已经访问了很多数据情况下,该服务器挂掉,再次访问时,处理的服务器更换为正常的服务器,但是数据都会丢失

第一步:hang2安装memcahce(因为hang1我们之前安装过了),并开启memcache

[root@hang2 bin]# yum install memcached -y
[root@hang2 ROOT]# /etc/init.d/memcached start

在这里插入图片描述
在这里插入图片描述

第二步:将所需的安装包都放到1和2的/usr/local/tomcat/lib目录下

在这里插入图片描述

[root@foundation11 opt]# scp -r * root@172.25.11.1:/usr/local/tomcat/lib
[root@foundation11 opt]# scp -r * root@172.25.11.2:/usr/local/tomcat/lib/

在这里插入图片描述

最终1和2的结果如下所示:
在这里插入图片描述

第三步:编辑配置文件

[root@hang1 lib]# cd /usr/local/tomcat/conf
[root@hang1 conf]# ls
[root@hang1 conf]# vim context.xml 

 34 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
 35 memcachedNodes="n1:172.25.11.1:11211,n2:172.25.11.2:11211"  
 36 failoverNodes="n1" 
 37 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
 38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"  />

在这里插入图片描述
在这里插入图片描述

将这个文件给2也发送一份,并根据需求修改:

在这里插入图片描述
在这里插入图片描述

第四步:启动1和2的tomcat和memcache

注意:如果tomcat之前是开启的,要先关闭,在开启。

[root@hang1 conf]# cd /usr/local/tomcat/
[root@hang1 tomcat]# cd bin/
[root@hang1 bin]# ./startup.sh 
[root@hang1 bin]# /etc/init.d/memcached status
memcached is stopped
[root@hang1 bin]# /etc/init.d/memcached start

[root@hang2 conf]# /etc/init.d/memcached status
memcached (pid  13095) is running...
[root@hang2 conf]# cd /usr/local/tomcat/bin/
[root@hang2 bin]# ./startup.sh 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第五步:测试

在这里插入图片描述
在这里插入图片描述

此时,我们去将2挂掉~
在这里插入图片描述

在1上面有2的数据:
在这里插入图片描述
也可以监控日志,查看到数据:

cd  /usr/local/tomcat/logs/
tail -f  catalina.out
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值