在上一篇中说到了挂掉server1的服务,然后在server2中可以实现会话保持,但是server1上之前的注册数据并不会同步到server2上,这时候就需要会话共享,让server1挂掉后,在server2上可以看到之前server1注册数据,并且在新的server2上实现会话保持
这个时候就要用到memcache这个存储节点,它属于交叉存储
tomcat1和tomcat2上面都有memcache存储(把数据缓存在内存当中)
分别为memcache1和memcache2
这两个存储节点属于存储节点
当tomcat1挂了之后,客户1就会去访问tomcat2对应的memcache
这时候会把用户放在memcache1的数据全部放到memcache2上面
如果tomcat服务器都好着,memcache不会同步数据过,一旦坏了立刻同步数据过来
这就是memcache-session交叉存储的好处
什么是session?
Session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 Session 保存在服务器上
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是 Session
客户端浏览器再次访问时只需要从该 Session 中查找该客户的状态就可以了
session共享原理及实现共享
http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你
当两台后端服务器中由一台挂掉了,能否保证数据不丢失并转移到另外一台服务器中,这就需要会话共享,操作如下:
查看server1和server2的tomcat服务是否开启,8080端口
在server2上面:
yum install memcached -y 安装缓存的服务
== server1上面:==
cd //usr/local/tomcat/lib
查看tomcat下当前的jar包
从真机上面拷贝memcache-session到server1和server2这两个tomcat服务器上面
在server1上面
将拷贝过来的jar目录下面所有jar包移到当前目录
删除重复多余的包
server2上一样的操作
在server1上
cd /usr/local/tomcat/
cd conf/
vim server.xml编辑tomcat的配置文件,解释了三个端口
server1和server2修改context.xml文件,然后关闭再重启tomcat
cd /usr/local/tomcat/conf/
vim context.xml
加入实现session共享的内容
== 在server1上面;==
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh 重启tomcat服务
在server2上面:
/etc/init.d/memcached status
/etc/init.d/memcached start开启memcache服务
cd /usr/local/tomcat/bin/
./shutdown.sh
./startup.sh开启tomcat服务
netstat -antlupe
== 测试:看有没有实现数据共享(通过memcache)==
在浏览器里面输入172.25.15.1/test.jsp,注册信息这个属于动态处理
开始注册信息(多注册几个),一直是tomcat2服务器接受请求
然后关闭server2的tomcat服务
继续注册信息(多注册几个),发现同一个用户注册所有的数据会同步过来,且server info变成了 server1
如果两个都好着,不会同步,一旦一个宕机,数据会利马同步到另外一个上面
这样就实现了数据的转移
在server1中
vim catalina.out 可以看到数据迁移记录