Nginx+tomcat集群+redis实现session共享

ip_hash解决session丢失存在“集群”无法发挥作用的后遗症!!!
那么,如何保证在解决session问题的同时发挥“集群”的作用[・_・?]

Nginx+tomcat集群+redis实现session共享

测试问题

1.分别在两个tomcat中新建index.jsp页(webapps\myweb\index.jsp)
2.注意修改</title>  和  <% out.println("这是tomcat1");%>内容 以区别不同服务器
4.去多次访问localhost/myweb/index.jsp
3.注意每次运行观察sessionID(每次访问SessionID都会被改变 )
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%@ page language="java" import="java.text.SimpleDateFormat"%>
<%  
  request.getSession().setAttribute("mzd","123");
  SimpleDateFormat simpleDateFormat=new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
  String date=simpleDateFormat.format(new Date());
%>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>   
    <title>tomcat1</title>  
  </head>  
  <body>  
        SessionID:<%=session.getId()%>  
        <BR>  
        当前时间为:<%=date%>  
        <BR>  
        SessionPort:<%=request.getServerPort()%>  
        <BR>  
        mzd的值为:<%=session.getAttribute("mzd")%>  
       <BR>  
        <%  
        out.println("这是tomcat1");  
        %> 
  </body>  
</html>  

解决问题

思路:将原来由每一个tomcat管理的session统一存储到redis中管理
版本:apache-tomcat-7.0.75 、nginx-1.8.0、redis_2.8.9
1.访问此路径:[https://github.com/ran-jit/tomcat-cluster-redis-session-manager/wiki]
2.下载redis管理器tomcat-cluster-redis-session-manager.zip并解压
3.拷贝四个jar包到tomcat的lib文件夹下

拷贝四个jar包.jpg

  1. 将redis-data-cache.properties放到tomcat的conf文件夹中(依据自己的redis进行相应配置)


    redis-data-cache.properties配置文件.jpg

    5.在tomcat的conf文件夹中打开context.xml进行编辑


    拷贝路径值.jpg

    编辑context.xml.jpg

再次测试(SessionID不再变化)

启动两个tomcat、启动redis-server、启动nginx
访问:[localhost/myweb/index.jsp]


tomcat1.jpg

tomcat2.jpg
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容