tomcat-使用redis做session_id共享

用途:tomcat集群共享session。 支持tomcat7,8,9

1、安装tomcat(2个)(仅在实验环境配置,用作验证使用)

  • 安装tomcat
unzip apache-tomcat.zip -d /service/tomcat1
unzip apache-tomcat.zip -d /service/tomcat1
  • 修改tomcat端口,保持两个实例的端口不冲突
  • 在tomcat的数据文件夹中,增加查看session ID的页面
cat > /service/tomcat1/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>获取session id</title>
</head>
<body>
    Session Id : <%= request.getSession().getId() %>
</body>
</html>
EOF
cat > /service/tomcat2/webapps/ROOT/index.jsp <<EOF
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>获取session id</title>
</head>
<body>
    Session Id : <%= request.getSession().getId() %>
</body>
</html>
EOF

2、 安装redis(端口:6379,密码passwd,IP:127.0.0.1)


3、配置tomcat使用redis共享session ID

wget https://github.com/ran-jit/tomcat-cluster-redis-session-manager/releases/download/2.0.4/tomcat-cluster-redis-session-manager.zip
  • 解压解压,并复制jar文件至tomcat/lib目录中
unzip  tomcat-cluster-redis-session-manager.zip
cd tomcat-cluster-redis-session-manager
cp lib/*.jar /service/tomcat1/lib
cp lib/*.jar /service/tomcat2/lib
  • redis-data-cache.properties复制至 tomcat/conf目录中
cp conf/redis-data-cache.properties /service/tomcat1/conf
cp conf/redis-data-cache.properties /service/tomcat2/conf
  • 配置tomcat/conf/ redis-data-cache.properties 文件
#-- Redis data-cache configuration


#- redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....
redis.hosts=127.0.0.1:6379


#- redis password (for stand-alone mode)
redis.password=password


#- set true to enable redis cluster mode
redis.cluster.enabled=false


#- redis database (default 0)
#redis.database=0


#- redis connection timeout (default 2000)
#redis.timeout=2000

可以配置redis-cluster集群模式,按照实例,修改对应参数即可

  • 配置tomcat/conf/context.xml文件
    <Valve className="tomcat.request.session.redis.SessionHandlerValve" />
    <Manager className="tomcat.request.session.redis.SessionManager" />
</Context>
  • 配置tomcat/conf/web.xml文件 (计数单位:分)(配置sessionID过期时间)
    <session-config>
         <session-timeout>30<session-timeout>
    <session-config>

如果项目中有配置,以项目配置为准


4、 重启tomcat后生效。

通过浏览器访问tomcat两个实例的页面,都为同一个session ID。

Session Id : 8AE6024E09FE16D1B5734C4BD7012AE2

查询redis缓存库

get 8AE6024E09FE16D1B5734C4BD7012AE2
127.0.0.1:6379> get 8AE6024E09FE16D1B5734C4BD7012AE2
"\xac\xed\x00\x05sr\x00<com.r.tomcat.session.management.SessionSerializationMetadata\x01\xba\x17\xde\xc0o\xb0\n\x03\x00\x01[\x00\x15sessionAttributesHasht\x00\x02[Bxpw\x14\x00\x00\x00\x10\x1c\x1f\xd4\xa1k\x1aq\xd3u\xfbe\xbffJ\x8c\xabxsr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01dn3cRsq\x00~\x00\x03\x00\x00\x01dn3cRsr\x00\x11java.lang.Integer\x12\xe2\xa0\xa4\xf7\x81\x878\x02\x00\x01I\x00\x05valuexq\x00~\x00\x04\x00\x00\x0e\x10sr\x00\x11java.lang.Boolean\xcd r\x80\xd5\x9c\xfa\xee\x02\x00\x01Z\x00\x05valuexp\x01q\x00~\x00\nsq\x00~\x00\x03\x00\x00\x01dn3cRt\x00 8AE6024E09FE16D1B5734C4BD7012AE2sq\x00~\x00\a\x00\x00\x00\x00w\b\x00\x00\x01dn3cR" 

配置成功,前端代理nginx可以不用配置配置ip hash来保持session

posted @ 2020-01-03 15:36  陶玉轩  阅读(600)  评论(0编辑  收藏  举报