温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java tomcat怎么集群部署

发布时间:2026-09-02 07:32:57 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

下面给你一个从原理到实操的 Java + Tomcat 集群部署方案,适合生产环境,也适合理解整体架构。


一、Tomcat 集群的核心目标

Tomcat 集群主要解决:

  1. 高可用(一台宕机不影响服务)
  2. 负载均衡(多台分摊请求)
  3. Session 共享(用户登录状态不丢失)

二、典型架构图(最常用)

            |
        Nginx / LVS
            |
  +---------+---------+
  |         |         |
Tomcat1  Tomcat2  Tomcat3
  |         |         |
  +---- Redis / DB ---+

三、部署步骤(实战)

1️⃣ 准备多台 Tomcat

  • 服务器:至少 2 台(如 192.168.1.101、192.168.1.102)
  • Tomcat 版本一致(推荐 8.5 / 9)
  • 应用 WAR 包一致
# 每台机器
unzip apache-tomcat-9.x.zip

2️⃣ 配置 Tomcat(server.xml)

(1)开启 AJP(可选,Nginx 用)

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

(2)配置 Engine(集群标识)

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

每台 Tomcat 的 jvmRoute 必须不同


3️⃣ Session 共享(重点)

✅ 推荐方案:Redis Session 共享

使用 Tomcat Redis Session Manager

(以 tomcat-redis-session-manager 为例)

  1. 拷贝 jar 到 lib/:
commons-pool2.jar
jedis.jar
tomcat-redis-session-manager.jar
  1. 修改 context.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
    host="127.0.0.1"
    port="6379"
    database="0"
    maxInactiveInterval="1800" />

✅ 优点:

  • 无状态 Tomcat
  • 重启不丢 Session
  • 最适合集群

4️⃣ Nginx 负载均衡配置

upstream tomcat_cluster {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

server {
    listen 80;
    location / {
        proxy_pass http://tomcat_cluster;
    }
}

✅ 支持:

  • 轮询(默认)
  • ip_hash(不推荐,不利于扩容)

5️⃣ 启动 & 验证

# 每台 Tomcat
bin/startup.sh

访问:

http://nginx-ip/

✅ 测试:

  • 停一台 Tomcat,服务仍可用
  • 登录后刷新,Session 不丢

四、进阶方案(可选)

✅ 方案对比

方案 说明 推荐度
Redis Session 无状态、易扩展 ⭐⭐⭐⭐⭐
Tomcat Cluster 广播同步 ⭐⭐
Nginx ip_hash 简单但不灵活 ⭐⭐

五、生产建议

✅ 使用 Spring Boot + 外置 Tomcat ✅ 配合 Docker + K8s(更现代) ✅ 静态资源交给 Nginx ✅ Session 尽量放 Redis / JWT


如果你愿意,我可以:

  • 给你 Docker Compose Tomcat 集群示例
  • 或 Spring Boot + Redis Session 完整代码
  • 或 K8s 部署 Tomcat 方案

你现在是 传统 Tomcat 部署 还是 Spring Boot?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手