`
dinguangx
  • 浏览: 244497 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【电商】nginx+redis+tomcat实现session共享集群

阅读更多

本文记录nginx+redis+tomcat实现session共享的过程

tomcat-redis-session-manager组件:https://github.com/jcoleman/tomcat-redis-session-manager

tomcat-redis-sessoin-manager对tomcat的支持:

(1) tomcat6:支持,要求jdk为1.6, 需要引入tomcat-redis-session-manager-1.2-tomcat-6.jar,不过现在已经处理不维护的状态

(2) tomcat7:支持,jdk可以是1.6或1.7,需要引入tomcat-redis-session-manager-1.2-tomcat-7.jar; 如果引入的是tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar则仅支持JDK1.7

(3) tomcat8:目前不支持, 可以尝试一下https://github.com/chexagon/redis-session-manager(未实际验证)

组件下载:https://github.com/jcoleman/tomcat-redis-session-manager/downloads

 

使用组件版本

nginx:1.8.0

tomcat两个:6.0.44 

redis:2.4.10

JDK:1.6.0_34

 

(1) 将下面所有依赖的这些jar包放在$TOMCAT_HOME/lib中:

jedis-2.0.0.jar  tomcat-redis-session-manager-1.2-tomcat-6.jar commons-pool-1.5.5.jar

(2) 两个tomcat分别配置conf/context.xml,增加:

<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="localhost" 
         port="6379"
         database="0" 
         maxInactiveInterval="60" />

 

另外,分别配置两个tomcat的HTTP监听端口为6181和6182

(3) nginx配置:

   

upstream cluster_redis {  
        server localhost:6181;  
        server localhost:6182;  
   }  
   server {  
       listen 6180;  
       server_name localhost;  
       location / {  
         proxy_pass http://cluster_memcached;  
       }  
   }  

 

 这里配置nginx监听端口为6180,并请所有的请求反向代理到6181和6182的tomcat集群.

 

(4) 测试代码session.jsp:

<%@ page import="java.util.Enumeration" %>  
<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
<html>  
<head>  
    <title>session test</title>  
  <%  
    String key = request.getParameter("sessionKey");  
    String value = request.getParameter("sessionValue");  
    if(key != null && !"".equalsIgnoreCase(key.trim())) {  
      session.setAttribute(key, value);  
    }  
  %>  
</head>  
<body>  
<form action="session.jsp" method="post">  
<input type="text" name="sessionKey" value="key1"><input type="text" name="sessionValue" value="value1">  
<input type="submit" value="提交">  
</form>  
<h4>已经存储的session--<%=session.getServletContext().getRealPath("/")%></h4>  
<table>  
  <tr>  
  <th>key</th>  
  <th>value</th>  
  </tr>  
  <%  
  Enumeration<String> keys = session.getAttributeNames();  
    while(keys.hasMoreElements()){  
      String k = keys.nextElement();  
      String v = (String)session.getAttribute(k);  
      %>  
  <tr>  
    <td><%=k%></td>  
    <td><%=v%></td>  
  </tr>  
  <%  
    }  
  %>  
</table>  
</body>  
</html>  

 

 

需要注意的是,tomcat-redis-session-manager组件并不提供redis集群的支持。对该问题,作者的解释是推荐使用twitter的twemproxy或者碗豆荚的codis之类的redis代理服务。

codis的相关资源:

codis地址:https://github.com/wandoulabs/codis

6
1
分享到:
评论
1 楼 yin_bp 2015-07-28  
感兴趣可以了解一下bboss会话共享框架,快速实现集群节点间会话共享和跨域跨应用会话共享,实现与具体容器无关(tomcat,weblogic,websphere,jetty等),支持tomcat之类容器的各种版本,兼容servlet规范(无需调整程序即可快速集成遗留系统中),无需考虑会话数据序列化问题;能够统计在线会话数,在统一监控中心管理应用会话(删除会话,查询会话数据等),无需使用session_sticky,支持ip层(4层)和http应用层(7层)负载会话共享,参考资料:
bboss会话共享demo使用指南
bboss会话共享培训文档
bboss session共享架构及特点
bboss session共享使用方法介绍

相关推荐

    nginx+tomcat+redis完成session共享

    这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...

    nginx+redis负载均衡、session共享

    在构建高性能、高可用的Web服务时,"nginx+redis负载均衡、session共享"是一个常见的解决方案。这个方案结合了Nginx的反向代理和负载均衡能力,以及Redis的内存数据存储和分布式特性,用于处理高并发场景下的HTTP...

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

    目前只支持tomcat8.5,其它版本的tomcat还没测试,自己配置过很多nginx+tomcat集群+redis实现session共享的系统,经过仔细总结得出这些,可以说是知识的结晶,欢迎大家来下载,不好的地方可以多提,有问题看到的话会...

    Nginx+tomcat+redis

    - **session共享**:在分布式环境中,Redis可以作为session存储,解决跨服务器的session共享问题,确保用户会话的一致性。 - **消息队列**:Redis支持发布/订阅模型,可以作为简单消息队列,用于异步处理任务或...

    nginx+Redis+tomcat实现session共享测试代码

    总的来说,"nginx+Redis+tomcat实现session共享测试代码"是一个典型的Web服务集群解决方案,通过结合Nginx的反向代理、Redis的分布式缓存以及Tomcat的应用托管,有效地解决了跨应用Session管理的问题。对于学习和...

    redis缓存服务器Nginx+Tomcat+redis+MySQL实现session会话共享

    "redis缓存服务器Nginx+Tomcat+redis+MySQL实现session会话共享"的主题旨在探讨如何利用这些技术组件来实现这一目标。以下是相关知识点的详细说明: **Redis**:Redis是一个高性能的键值数据存储系统,常用于做缓存...

    Nginx+Tomcat+Redis集群和session共享所有jar包

    Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享所需要的所有jar包,包括如下jar包:commons-logging-1.2.jar,commons-pool2-2.6.0.jar,jedis-2.9.0.jar,tomcat-juli-7.0.90.jar,tomcat-redis-...

    Nginx+Keepalived+Redis+Tomcat

    根据提供的文件信息,本文将详细解析如何在Linux环境下构建Nginx+Keepalived+Redis+Tomcat集群,实现session共享、负载均衡以及高可用性。以下内容将围绕集群规划与具体实施步骤展开。 ### 一、集群规划 在进行...

    nginx+redis实现session共享

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"nginx+redis实现session共享"的主题就涉及到了这一核心需求。为了实现单点登录(Single Sign-On, SSO)以及跨应用的session共享,我们可以结合使用Nginx作为...

    nginx+tomcat+redis集群配置session共享(下载运行即可)+详细说明

    本实例基于nginx+tomcat+redis的集群实现,实现session的复制。压缩包内含两个tomcat+一个nginx服务器+64位windows版的redis+说明文档,下载即可运行,详细步骤可以参考文档,从此告别集群盲区

    nginx+redis+tomcat

    总之,“nginx+redis+tomcat”是一个强大的Web服务架构,结合了Nginx的负载均衡和静态资源处理能力、Redis的高速缓存与会话共享功能,以及Tomcat对Java应用的承载能力,为企业提供了稳定、高效的Web服务环境。

    Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享

    超详细Nginx+Tomcat+Redis搭建高性能负载均衡集群Session共享搭建说明,按文档步骤可轻松搭建并实现session共享

    Nginx+Tomcat+Redis实现session共享

    Nginx+Tomcat+Redis实现session共享,通过Nginx作为前端的负载,把请求分发到后端的Tomcat服务器上,提高并发数;但是单纯的通过Nginx的ip_hash负载是很多问题的。只要用户一切换网络或者后端Tomcat主机宕机session就...

    Nginx+Tomcat+Redis集群和session共享所有jar包(新)

    Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享所需要的所有jar包,包括如下jar包:commons-logging-1.2.jar,commons-pool2-2.4.2.jar,jedis-2.8.2.jar,tomcat-juli.jar,tomcat-redis-session-...

    Keepalived+nginx+tomcat+redis_session_share

    本案例通过搭建一个基于`Keepalived`、`nginx`、`Tomcat`及`Redis`的服务集群来实现应用服务的高可用性和负载均衡,并通过`Redis`实现了`Tomcat`间的`Session`共享功能。 ### 一、环境简介 - **服务器配置**:两台...

    nginx+tomcat+redis集群部署环境

    nginx+tomcat+redis集群部署环境,包括nginx tomcat redis及集群部署所需jar包,jedis-2.6.1.jar,commons-pool2-2.2.jar,tomcat-redis-session-manager1.2.jar 具体步骤可以参见我的博文

    spring4+redis3+nginx1实现tomcat集群session共享源码

    本文将详细介绍如何使用Spring、Redis和Nginx来实现Tomcat集群中的Session共享,以及提供相关的源码下载。 首先,我们来看Spring框架。Spring是Java开发中最流行的开源框架之一,它提供了丰富的功能和模块,包括...

    Nginx+Redis+Tomcat 集群部署

    在构建高性能、高可用性的Web服务时,"Nginx+Redis+Tomcat 集群部署"是一种常见的架构模式。这种模式结合了Nginx的反向代理和负载均衡能力,Redis的数据缓存功能,以及Tomcat的Java应用服务器性能,能够有效提升系统...

    Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

    本篇文章将探讨如何利用Redis、Tomcat和Nginx来实现Session共享,以便在分布式环境中保持用户状态的一致性。 首先,让我们了解一下Session的概念。Session是Web服务器用来跟踪用户状态的一种机制。当用户登录后,...

Global site tag (gtag.js) - Google Analytics