温馨提示×

debian tomcat怎么集群

小樊
42
2026-10-18 04:34:01
栏目: 智能运维

在 Debian 上做 Tomcat 集群,通常目标是:多台 Tomcat 实例共同提供服务,实现负载均衡 + 会话保持 / 会话复制。下面给你一套常见、实用、可落地的方案。


一、Tomcat 集群常见架构

            |
        Nginx / Apache
            |
   -----------------------
   |          |          |
 Tomcat1   Tomcat2   Tomcat3
  • 前端:Nginx / Apache(负载均衡)
  • 后端:多个 Tomcat 实例
  • 会话方案:
    • 会话复制(Tomcat Cluster)
    • 或会话共享(Redis / 数据库)

二、Debian 安装多个 Tomcat

1. 安装 JDK

apt update
apt install openjdk-17-jdk -y

2. 安装 Tomcat(示例 Tomcat 10)

apt install tomcat10 -y

3. 多实例方式(推荐)

复制实例目录:

cp -r /var/lib/tomcat10 /var/lib/tomcat10-2
cp -r /etc/tomcat10 /etc/tomcat10-2

修改端口(关键):

  • server.xml
    • 8005 → 8006
    • 8080 → 8081
    • 8009 → 8010

三、Tomcat 原生 Session 复制(简单方案)

1. 修改 server.xml

在 <Engine> 中开启 Cluster:

<Engine name="Catalina" defaultHost="localhost">
  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
</Engine>

2. 应用开启分布式

在 WEB-INF/web.xml 中加:

<distributable/>

3. 注意

  • 只适合 小规模集群
  • 节点多了性能下降明显

四、Nginx 做负载均衡(最常用)

1. 安装 Nginx

apt install nginx -y

2. 配置 upstream

upstream tomcat_cluster {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    listen 80;
    location / {
        proxy_pass http://tomcat_cluster;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

✅ ip_hash 可保证同一用户访问同一 Tomcat


五、Redis 共享 Session(推荐生产方案)

方案

  • Tomcat 不复制 Session
  • Session 存 Redis
  • 任意 Tomcat 都能读取

组件

  • tomcat-redis-session-manager
  • Redis Server

步骤简述

  1. 安装 Redis
apt install redis-server -y
  1. Tomcat 引入 Redis Session Manager Jar
  2. 配置 context.xml
<Manager className="com.example.redis.RedisSessionManager"
         host="127.0.0.1"
         port="6379"
         database="0"/>

✅ 适合大规模集群


六、生产建议

✅ 推荐组合:

  • Nginx + 多 Tomcat + Redis Session
  • 不用 Tomcat 原生复制

✅ 健康检查

  • Nginx max_fails
  • Tomcat 健康检查接口

✅ 静态资源放 Nginx

  • 提升性能

七、常见问题

Q:Tomcat 集群必须同机吗?
不需要,跨服务器也可以,只要网络通。

Q:Debian 12 能用吗?
完全可以,上面方案通用。

Q:Spring Boot 怎么集群?
内嵌 Tomcat 一样,Redis Session 最常用。


如果你愿意,我可以:

  • 给你 完整 server.xml 示例
  • 或 Docker + Tomcat 集群方案
  • 或 一步一步部署脚本

你现在是 学习 / 测试 / 生产 环境?

0 踩