美文网首页
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