温馨提示×

Debian Tomcat如何做集群

小樊
47
2026-09-24 19:13:34
栏目: 智能运维

在 Debian 上搭建 Tomcat 集群,通常目标有两个:

  1. 负载均衡(多个 Tomcat 分摊请求)
  2. Session 共享/复制(用户会话不丢失)

下面按 生产可用方案 给你一个完整思路(以 Debian 11/12 + Tomcat 9/10 为例)。


一、整体架构(推荐)

            +-------------------+
            |   Nginx / HAProxy |
            |   (负载均衡)       |
            +-------------------+
              |      |      |
        +-----+      |      +-----+
        |            |            |
   Tomcat1      Tomcat2       Tomcat3
 (Debian)      (Debian)      (Debian)

二、安装 Tomcat(每台 Debian 节点)

sudo apt update
sudo apt install tomcat9 -y

或手动下载官方二进制(更可控):

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gz

确保每台 Tomcat:

  • 不同 IP
  • 相同应用
  • 相同 server.xml 基础配置

三、Tomcat Session 集群方案(关键)

方案 1:Tomcat 自带 Session 复制(不推荐大规模)

修改 conf/server.xml:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

并开启:

<Manager className="org.apache.catalina.ha.session.DeltaManager"/>

⚠️ 缺点:

  • 节点多时性能差
  • 网络压力大

✅ 方案 2:Redis 共享 Session(强烈推荐)

1. 安装 Redis

sudo apt install redis-server -y

2. Tomcat 使用 Redis Session Manager

使用社区方案(如 redisson 或 tomcat-redis-session-manager):

示例(Redisson):

<Manager className="org.redisson.tomcat.RedissonSessionManager">
  <configPath>/etc/tomcat9/redisson.yaml</configPath>
</Manager>

redisson.yaml:

singleServerConfig:
  address: "redis://127.0.0.1:6379"

✅ 优点:

  • 无状态 Tomcat
  • 易扩展
  • 生产级

四、Nginx 负载均衡(Debian)

安装 Nginx

sudo apt install nginx -y

配置 nginx.conf

upstream tomcat_cluster {
    ip_hash;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
    server 192.168.1.13:8080;
}

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(不强制)


五、部署应用(所有节点一致)

scp app.war tomcat1:/var/lib/tomcat9/webapps/
scp app.war tomcat2:/var/lib/tomcat9/webapps/
scp app.war tomcat3:/var/lib/tomcat9/webapps/

或统一用 NFS / 对象存储。


六、健康检查 & 高可用(进阶)

  • Nginx:被动健康检查
  • HAProxy:主动健康检查(更好)
  • Keepalived + VIP:防止 Nginx 单点

七、推荐生产组合(总结)

项目 推荐
负载均衡 Nginx / HAProxy
Session Redis
Tomcat 无状态
节点数 2~N
部署 自动化(Ansible)

如果你愿意,我可以:

  • 给你 完整 server.xml
  • 给你 Docker + Tomcat 集群方案
  • 给你 Debian + Tomcat + Redis 一键脚本

你现在是 测试环境 还是 生产环境?

0 踩