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文件夹下
将redis-data-cache.properties放到tomcat的conf文件夹中(依据自己的redis进行相应配置)
5.在tomcat的conf文件夹中打开context.xml进行编辑
再次测试(SessionID不再变化)
启动两个tomcat、启动redis-server、启动nginx
访问:[localhost/myweb/index.jsp]