美文网首页
nginx-Session共享

nginx-Session共享

作者: AlexDawson | 来源:发表于2019-05-10 18:16 被阅读0次

一、为什么要实现共享

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

相关文章

网友评论

      本文标题:nginx-Session共享

      本文链接:https://www.haomeiwen.com/subject/zeaxaqtx.html