首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Windows 下 Nginx + Tomcat 集群 + Redis 實現 Session 共享完整實戰

     編輯:Java 綜合教學

Nginx + Tomcat 群 + Redis Session 共享全流程實戰

環境版本

  • Nginx 1.9.13
  • Tomcat 7.0.64 × 2 實例(端口 8898、8899)
  • Redis 2.8 (端口 6379)
  • JDK 1.8 + Maven

步驟 1:準備兩個 Tomcat 實例

  • 複製 Tomcat 目錄為 tomcat-8898、tomcat-8899
  • 修改 conf/server.xml:
    — <Connector port="8898"/> / 8899
    — <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm8898"/>(標識實例)
  • webapps/ROOT/index.jsp 寫入測試代碼:
    讀寫 session.setAttribute("userSession", username) 並顯示當前 Tomcat 端口與 Session 值

步驟 2:配置 Nginx 反向代理與負載均衡

conf/nginx.conf 核心片段:


upstream tomcat_cluster {
    # ip_hash;  # 測試時關閉,否則會粘滯同一實例
    server localhost:8898 weight=1;
    server localhost:8899 weight=1;
}

server {
    listen 8888;
    server_name localhost;
    location / {
        proxy_pass https://tomcat_cluster;
        proxy_connect_timeout 3s;
        proxy_send_timeout 30s;
        proxy_read_timeout 30s;
    }
}
  • 啟動:nginx.exe(停止 nginx -s stop)
  • 訪問 https://localhost:8888 驗證輪詢切換兩個 Tomcat

步驟 3:啟動 Redis

  • 默認配置 port 6379,雙擊 redis-server.exe 啟動
  • 關閉:redis-cli shutdown

步驟 4:引入 Tomcat-Redis-Session-Manager

  1. Clone https://github.com/jcoleman/tomcat-redis-session-manager
  2. 用一致的 JDK 版本 mvn clean package 生成 JAR
  3. 複製生成的 JAR 及依賴 jedis-2.7.2.jar、commons-pool2-2.4.1.jar 到兩個 Tomcat 的 lib/ 目錄

步驟 5:修改 Tomcat context.xml 啟用 Redis Session

conf/context.xml


<?xml version='1.0' encoding='utf-8'?>
<Context>
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
             host="localhost" port="6379" database="0" maxInactiveInterval="60" />
</Context>

步驟 6:啟動順序驗證

  1. 啟動 Redis
  2. 啟動兩個 Tomcat
  3. 啟動 Nginx
  4. 瀏覽器訪問 https://localhost:8888

驗證現象

  • 未寫入 Session 時:刷新頁面輪詢顯示 8898 / 8899 兩個實例
  • 輸入用戶名提交 → 寫入 Session
  • 再次刷新:無論落在哪個 Tomcat,Session 值均可讀取,證明共享生效
  • Redis 控制台可見 spring:session:sessions:* 鍵值持續更新

關鍵點總結

生產化建議

  • Redis 改為集群/哨兵模式,配置 sentinelMaster 或 nodes
  • Session 序列化改用 Kryo/Protobuf 降低體積
  • Nginx 啟用 proxy_cache、health_check、SSL 終結
  • Tomcat 監控接入 Prometheus + Grafana(JMX Exporter)

完成以上步驟,即可在 Windows 開發/測試環境快速搭建具備 Session 共享能力的 Tomcat 集群,為生產架構驗證打下基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
組件關鍵配置
TomcatjvmRoute 不同、context.xml 掛載 RedisSessionManager、lib 放三個 JAR
Nginxupstream 定義多 server、關閉 ip_hash 測試輪詢
Redis單實例即可,生產建議 Sentinel/Cluster 高可用
Session ManagerValve 攔截請求、Manager 持久化到 Redis、maxInactiveInterval 控制過期