redis完成session共享

本文介绍如何使用 Nginx 和 Tomcat 配合 Redis 实现跨服务器的 Session 共享。具体步骤包括配置 Nginx 的负载均衡、设置 Tomcat 的上下文参数以及引入必要的 Redis 依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx安装:http://blog.youkuaiyun.com/grhlove123/article/details/47834673
redis安装:http://blog.youkuaiyun.com/grhlove123/article/details/47783471
准备两个tomcat,修改相应的端口
 
名称  IP  端口  tomcat版本  JDK
tomcat1  10.10.49.23  8080  7.0.40  1.7.0_25
tomcat2  10.10.49.15  8081  7.0.40  1.7.0_25
 
修改nginx.conf加上:
[html] view plain copy
 
    upstream backend { 
        server 10.10.49.23:8080 max_fails=1 fail_timeout=10s; 
        server 10.10.49.15:8081 max_fails=1 fail_timeout=10s; 
    } 
修改nginx.conf的location成
[html] view plain copy
 
    location / { 
        root   html; 
        index  index.html index.htm; 
        proxy_pass http://backend; 
     } 

启动nginx。
 
下载tomcat-redis-session-manager相应的jar包,主要有三个:
wget https://github.com/downloads/jcoleman/tomcat-redis-session-manager/tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
wget http://central.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar
wget http://central.maven.org/maven2/org/apache/commons/commons-pool2/2.0/commons-pool2-2.0.jar
下载完成后拷贝到$TOMCAT_HOME/lib中
修改两tomcat的context.xml:
 
[html] view plain copy
 
    <Context> 
     
        <!-- Default set of monitored resources --> 
        <WatchedResource>WEB-INF/web.xml</WatchedResource> 
     
        <!-- Uncomment this to disable session persistence across Tomcat restarts --> 
        <!--
        <Manager pathname="" />
        --> 
     
        <!-- Uncomment this to enable Comet connection tacking (provides events 
             on session expiration as well as webapp lifecycle) --> 
        <!--
        <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
        --> 
     
      <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> 
      <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
       host="10.10.49.20" 
       port="6379" 
       database="0" 
       maxInactiveInterval="60" /> 
    </Context> 

在tomcat/webapps/test放一个index.jsp
 
 
[html] view plain copy
 
    <%@ page language="java" %> 
    <html> 
      <head><title>TomcatA</title></head> 
      <body> 
      
        <table align="centre" border="1"> 
          <tr> 
            <td>Session ID</td> 
            <td><%= session.getId() %></td> 
          </tr> 
          <tr> 
            <td>Created on</td> 
            <td><%= session.getCreationTime() %></td> 
         </tr> 
        </table> 
      </body> 
    </html> 
    sessionID:<%=session.getId()%>  
    <br>  
    SessionIP:<%=request.getServerName()%>  
    <br>  
    SessionPort:<%=request.getServerPort()%>  
    <%  
    //为了区分,第二个可以是222 
    out.println("This is Tomcat Server 1111");  
    %>   
 
启动tomcat,发现有异常:com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve 类找不到
分别打开三个jar包,确实没有这个类,解决可以参考:
http://blog.youkuaiyun.com/qinxcb/article/details/42041023
 
通过访问http://10.10.49.20/test/

刷新:
可以看到虽然Server从1111变为2222,但session的创建时间没有变化,这就完成了session共享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值