nginx-Session共享

一、为什么要实现共享

首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话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()%>


tomcat1


拷贝至其他两台虚拟机,修改名字

四、错误排查

一切完成之后,测试一下,发现失败了


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


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


我们需要重启tomcat,shutdown之后再startup

重启完成之后就能连tomcat了




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


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




一切ok

你可能感兴趣的:(nginx-Session共享)