一、为什么要实现共享
首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况,于是session的共享就成了一个问题。
二、Session一致性解决方案
1、session复制
tomcat本身带有复制session的功能。
2、共享session
需要专门管理session的软件,memcached缓存服务,可以和tomcat整合,帮助tomcat共享管理session。
三、安装memcached
1.安装memcached内存数据库
yum install memcached–y
可以用telnet localhost 11211
2.web服务器连接memcached的jar包拷贝到tomcat的lib

拷贝至所有虚拟机
3.配置tomcat的conf目录下的context.xml


拷贝至所有虚拟机
注意:地址改成装memcached的地址
4.修改index.jsp,取sessionid看一看
<%@ page language="java"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
SessionID:<%=session.getId()%>
SessionIP:<%=request.getServerName()%>
</br>
<h1>tomcat1</h1>
</html>

拷贝至其他两台虚拟机,修改名字
四、错误排查
一切完成之后,测试一下,发现失败了

试着访问tomcat,发现同样不行

查看一下tomcat的日志在logs/catalina.out中

我们需要重启tomcat,shutdown之后再startup
重启完成之后就能连tomcat了



发现域名不一致,再次查看日志

发现连接被拒绝了,打开memcached服务



一切ok
网友评论