Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享
发布日期:2021-05-19 16:45:11 浏览次数:21 分类:精选文章

本文共 2919 字,大约阅读时间需要 9 分钟。

Tomcat 集群环境下的 Redis 会话管理器配置说明

一、 模型说明 Tomcat 集群环境下的会话管理可以通过 Redis Session Manager 插件实现高效的会话存储与共享。这种方案适用于需要高性能与高可用性的 web 应用场景。以下是相关插件及工具链的介绍。

二、 插件选择与准备

  • 推荐使用 ran-jit/tomcat-cluster-redis-session-manager插件,该插件支持 Tomcat 7、8、9 versions。
  • 可能采用 jcoleman/tomcat-redis-session-manager(仅适用于 Tomcat 7,目前无更新维护)。
  • 插件下载地址:
    • 从 ran-jit 的GitHub仓库获取最新版本:https://github.com/ran-jit/tomcat-cluster-redis-session-manager
    • 附件中提供的 2.0.2 版本可从下列链接下载:http://dl.iteye.com/topics/download/d9fffd9d-84dd-385b-b10e-6376eaf0c815
    • 对于仅支持 Tomcat 7 的情况,可参考 jcoleman 的 GitHub:https://github.com/jcoleman/tomcat-redis-session-manager

    三、 工作原理与配置说明

  • 插件文件结构解析
    • 解压后可在 conf 及 ib 目录找到所需文件:
      • conf/redis-data-cache.properties: Redis 配置文件,包含redis.hosts、timeout等参数
      • ib 目录下包含共需以下四个JAR包:
        • commons-logging-1.2.jar
        • commons-pool2-2.4.2.jar
        • jedis-2.9.0.jar
        • tomcat-cluster-redis-session-manager-2.0.1.jar
    1. 配置步骤说明 步骤 1:将相关JAR包拷贝至 Tomcat的lib目录
      • 注意:建议首先配置好一个Tomcat,然后复制完成后重启Tomcat,使其重新识别新库。

      步骤 2:设置Tomcat环境变量 在控制板 màu中添加 catalina.base 环境变量,值为 TOMCAT_LOCATION(需在 JDK 环境中 配置)。

      步骤 3:配置 Redis 访问凭证

      • 解压并修改 redis-data-cache.properties,配置 Redis 服务器地址及密码(如需)。
      • 将该文件拷贝至 Tomcat 的 conf 目录。

      步骤 4:配置 Tomcat 的 contexto.xml 在 conf/context.xml 中添加以下配置:

      步骤 5:设置会话超时 如需修改默认 30 分钟的会话超时,在 conf/web.xml 中修改 session-timeout 标签。

      四、 Nginx 集群配置

    2. Nginx 的获取与安装
      • 方向:访问 Nginx 官方网站下载最新版本:http://nginx.org/en/download.html
      • 64位 Windows 版本可从:http://nginx.org/download/nginx-1.12.2.zip下载
      1. Nginx 配置说明
        • 配置 nginx.conf 文件:
          upstream myTomcatCluster {
          server 127.0.0.1:9300 weight=1 fail_timeout=5s max_fails=1;
          server 127.0.0.1:9400 weight=1 fail_timeout=5s max_fails=1;
          }
          location / {
          proxy_pass http://myTomcatCluster;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_connect_timeout 1;
          proxy_read_timeout 1;
          proxy_send_timeout 1;
          }
        • 第一्मच效率优化配置可直接采用简单版本:
          location / {
          proxy_pass http://myTomcatCluster;
          }
        1. 启动 Nginx
          • 启动命令:start nginx
          • 关闭命令:nginx -s stop
          • 重新加载命令:nginx -s reload(配置修改后推荐使用)

          五、 测试与验证 1、 Tomcat 配置

          • 基本操作:将已配置好的一个Tomcat复制并重命名,修改其工作端口(如 9300、9400)。
          • 配置注意事项:修改 server.xml 文件中的相关设置,确保 jvmroute 正确配置。

          2、 项目部署

          • 创建新项目:新建 index.jsp 文件:
            <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
            首页 - Redis Session

            Tomcat 集群测试

            已登录 session ID:<%= session.getId() %>
            后缀表示 redirect URL:<%= session.getId() %>.jvm<%= request.getServerPort() %>
          • 将项目部署至不同 Tomcat 实例下,确保访问时 recognize不同的 session ID 及访问端口号。

          3、 测试结果验证

          • 同一 session ID cross不同的 Tomcat 服务器访问,使用 Nginx 集群均衡分发。
          • 测试 яр indulge 模拟场景:
            • 关闭其中一个 Tomcat 服务器
            • 测试 session ID 是否仍表达
            • 确认 session 负载均衡效果

          六、 注意事项

          • Redis 集群部署:建议 Redis 进行高可用性配置,以防止服务中断影响 session 共享。
          • 测试环境准备:确保 Nginx、Redis、两个 Tomcat 服务器都已运行正常。 -(Argably) 可根据实际需求调整 Redis 连接池配置及 session timeout 访问频率。

          以上配置与解析均基于个人实践经验,恳请在使用前进行适当测试与验证。这套方案适用于中小型 web 应用场景,具有较好的扩展性和性能表现。

    上一篇:在Java中如何优雅地判空
    下一篇:Java线程池实现原理与技术II

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月18日 02时46分33秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    deque stack java_「集合系列」- 初探 java 集合框架图 2023-01-24
    easyexcel 导出 代码翻译converter_【starter推荐】简单高效Excel 导出工具 2023-01-24
    eclipse里source的快捷方法_Eclipse快捷键/快捷操作汇总 2023-01-24
    elasticsearch 查询_Elasticsearch地理信息存储及查询之Geo_Point 2023-01-24
    embedding层_【预估排序】Embedding+MLP: 深度学习预估排序通用框架(一) 2023-01-24
    excel中最常用的30个函数_Excel玩转数据分析常用的43个函数! 2023-01-24
    flink sql设置并行度_Flink 参数配置和常见参数调优 2023-01-24
    go 字符串替换_Go 每日一库之 quicktemplate 2023-01-24
    hex editor neo下载_口袋妖怪爆焰黑手机版下载-口袋妖怪爆焰黑手游下载v4.3.0 安卓版... 2023-01-24
    hp工作站z8装Linux,惠普Z8G4双路最小工作站 2023-01-24
    html上传图片直接保存到数据库中,Editor上传图片路径存入数据库中怎么弄? 2023-01-24
    ICLOUD储存空间要升级吗_有人像我一样需要恢复苹果手机icloud空间ios备份时 微信卡住不动了吗(已解决)... 2023-01-24
    jaccard相似度_自然语言处理之文本相似度计算 2023-01-24
    java 字符编码过滤器_java web中字符编码的过滤器(Filter - 1) 2023-01-24
    java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单! 2023-01-24
    java开发区块链_用Java代码实现区块链 2023-01-24
    Java指定区间返回随机数 2023-01-24
    java攀枝花市房屋租售信息管理平台的设计与实现(ssm) 2023-01-24
    java教学团队管理系统(ssm) 2023-01-24
    java教学网站(ssm) 2023-01-24