温馨提示×

tomcat在debian怎集群

小樊
42
2026-09-27 16:10:20
栏目: 智能运维

在 Debian 上做 Tomcat 集群,通常有两层含义,需要区分清楚:

  1. 负载均衡 + 多实例(横向扩展)
    多个 Tomcat 实例,前面用 Nginx/Apache 做反向代理
  2. Session 复制集群(高可用)
    多个 Tomcat 之间同步 Session

下面给你一个 Debian 上最常见、可用的 Tomcat 集群方案。


一、架构示例(推荐)

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

说明:

  • Tomcat 本身 不负责负载均衡
  • Nginx 做反向代理 + 健康检查
  • Tomcat 做应用服务器
  • Session 可复制(可选)

二、安装 Tomcat(多实例)

1. 安装 JDK

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

2. 下载 Tomcat

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

复制一份:

sudo cp -r tomcat1 tomcat2

3. 修改端口(关键)

编辑:

/opt/tomcat1/conf/server.xml
/opt/tomcat2/conf/server.xml

示例(Tomcat2 改端口):

<Connector port="8081" protocol="HTTP/1.1" />
<Server port="8006" shutdown="SHUTDOWN" />

Tomcat1:

<Connector port="8080" />
<Server port="8005" />

三、Nginx 负载均衡(Debian)

1. 安装 Nginx

sudo apt install nginx -y

2. 配置 upstream

sudo nano /etc/nginx/conf.d/tomcat.conf
upstream tomcat_cluster {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

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;
    }
}

3. 重启 Nginx

sudo nginx -t
sudo systemctl restart nginx

四、Tomcat Session 复制(可选)

方式一:DeltaManager(同机/小规模)

编辑:

/opt/tomcat1/conf/server.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

并启用:

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

⚠ 注意:

  • 多机需配置 Receiver
  • 不适合大规模集群

方式二(推荐):Session 外置

  • Redis
  • JDBC
  • Spring Session

示例(Redis):

<Manager className="org.apache.catalina.session.PersistentManager">
  <Store className="org.apache.catalina.session.RedisSessionStore"/>
</Manager>

五、启动 Tomcat

/opt/tomcat1/bin/startup.sh
/opt/tomcat2/bin/startup.sh

访问:

http://服务器IP

六、常见坑

问题 原因
Session 丢失 未做 Session 复制
端口冲突 多个 Tomcat 没改端口
Nginx 502 Tomcat 没启动
性能差 DeltaManager 不适合多节点

七、生产建议

✅ Nginx + Tomcat 多实例
✅ Session 用 Redis
✅ systemd 管理 Tomcat
✅ 禁用 AJP(除非用 Apache)


如果你告诉我:

  • Tomcat 版本
  • 单机还是多机
  • 是否要 Session 不丢失

我可以直接给你 完整配置文件。

0 踩