温馨提示×

怎样集群debian tomcat

小樊
38
2026-10-12 08:23:27
栏目: 智能运维

下面给你一个在 Debian 上搭建 Tomcat 集群的常用、可落地方案,适合大多数 Web 应用(会话无状态或有共享会话需求都可)。


一、Tomcat 集群常见架构

典型结构:

Nginx / HAProxy
        |
  +-----+-----+
  |           |
Tomcat1    Tomcat2   (可扩展更多)
  |           |
共享存储 / 数据库 / Redis

二、准备工作(所有节点)

1. 安装 Debian + JDK

apt update
apt install -y openjdk-17-jdk
java -version

2. 创建 Tomcat 用户

useradd -m -s /bin/bash tomcat

3. 下载并安装 Tomcat

cd /opt
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.x/bin/apache-tomcat-10.1.x.tar.gz
tar -xzf apache-tomcat-*.tar.gz
mv apache-tomcat-* tomcat
chown -R tomcat:tomcat /opt/tomcat

三、Tomcat 集群配置(核心)

方式一(推荐):Nginx + Tomcat(无 Session 复制)

1. 修改 server.xml

每个 Tomcat 节点:

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

可设置不同 jvmRoute(用于粘性会话):

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

2. 配置 Nginx(负载均衡)

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

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

方式二:Tomcat 原生 Session 复制集群

适合小规模集群。

1. 修改 server.xml

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

或完整配置:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
  <Manager className="org.apache.catalina.ha.session.DeltaManager"/>
  <Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
              address="auto"
              port="4000"/>
  </Channel>
</Cluster>

2. 应用开启 distributable

<distributable/>

(在 web.xml 中)

⚠️ 注意:

  • 节点需互通 4000 端口
  • 性能一般,不推荐大规模

四、Session 共享(推荐方案)

使用 Redis 共享 Session

  1. 安装 Redis
apt install redis-server
  1. 使用 Tomcat Redis Session Manager
  • tomcat-redis-session-manager
  • 或 Spring Session(如果是 Spring Boot)

✅ 优点:

  • 无状态 Tomcat
  • 扩容简单

五、系统服务化(systemd)

vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=network.target

[Service]
User=tomcat
ExecStart=/opt/tomcat/bin/catalina.sh run
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start tomcat

六、验证集群

  • 访问 Nginx IP
  • 停止一个 Tomcat
  • 应用仍可访问
  • 查看日志:
tail -f /opt/tomcat/logs/catalina.out

七、生产建议

✅ 推荐组合:

  • Nginx + Tomcat + Redis Session
  • 至少 2 个 Tomcat 节点
  • 防火墙只开放 80/443

❌ 不推荐:

  • 大规模使用 Tomcat 原生 Session 复制

如果你愿意,我可以:

  • 给你 完整可复制的配置模板
  • 按 Spring Boot / 非 Spring 分别讲
  • 或帮你设计 K8s + Tomcat 集群

你现在是哪种使用场景?

0 踩