温馨提示×

debian tomcat怎样集群部署

小樊
37
2026-10-15 06:50:53
栏目: 智能运维

在 Debian 上部署 Tomcat 集群,通常目标有两个:

  1. 负载均衡(多台 Tomcat 分摊请求)
  2. Session 共享 / 高可用(一台宕机不影响用户会话)

下面给你一个实战可用的方案(Debian + Nginx + Tomcat 集群)。


一、整体架构

客户端
  ↓
Nginx(负载均衡)
  ↓
Tomcat1 (Debian)
Tomcat2 (Debian)
Tomcat3 (Debian)

可选:

  • Session 复制(Tomcat Cluster)
  • 或 Redis 集中式 Session

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

sudo apt update
sudo apt install -y openjdk-17-jdk

# 下载 Tomcat(示例 10.x)
cd /opt
sudo wget https://archive.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz
sudo tar -xzf apache-tomcat-10.1.20.tar.gz
sudo mv apache-tomcat-10.1.20 tomcat

创建用户(可选但推荐):

sudo useradd -r -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat

三、配置 Tomcat(关键)

1️⃣ 修改 server.xml

编辑:

/opt/tomcat/conf/server.xml

修改 AJP(推荐 Nginx + AJP)

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

或 HTTP:

<Connector port="8080"
           protocol="HTTP/1.1"
           address="0.0.0.0" />

2️⃣ 开启 Tomcat 集群(Session 复制)

在 server.xml 中:

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

并在 web.xml 中:

<distributable/>

✅ 适合小规模集群
❌ 大规模不推荐(广播风暴)


四、Nginx 负载均衡(一台 Debian)

sudo apt install nginx

编辑:

/etc/nginx/conf.d/tomcat.conf

HTTP 模式

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

server {
    listen 80;
    server_name example.com;

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

AJP 模式(需 nginx-upstream-ajp)

upstream tomcat {
    server 192.168.1.11:8009;
    server 192.168.1.12:8009;
}

五、Session 共享(推荐方案)

✅ 方案 1:Redis + Tomcat Session Manager(生产推荐)

Tomcat 不再自己复制 Session

/opt/tomcat/lib

加入:

  • tomcat-redis-session-manager
  • jedis

context.xml:

<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
         host="127.0.0.1"
         port="6379"
         database="0" />

六、启动 & 验证

/opt/tomcat/bin/startup.sh

访问:

http://nginx_ip

多次刷新,观察是否落到不同 Tomcat。


七、常见方案对比

方案 适合场景
Nginx + Tomcat 最常用
Tomcat 集群复制 小集群
Redis Session 大集群 ✅
Keepalived + Nginx Nginx 高可用

八、进阶(可选)

  • Keepalived 实现 Nginx 双机热备
  • Tomcat 多实例(一台机器多个 JVM)
  • Spring Session + Redis

如果你愿意,我可以:

  • 给你 完整一键部署脚本
  • 按 Docker / K8s 方式部署
  • 针对 生产环境调优

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

0 踩