温馨提示×

debian下tomcat怎样集群

小樊
47
2026-10-15 05:45:49
栏目: 智能运维

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

  1. 负载均衡(多台 Tomcat 分担请求)
  2. 会话保持 / 会话复制(用户不掉线)

下面给你一套常见、实用的方案,从简单到完整。


一、基础架构(最常用)

           |
       Nginx / Apache
           |
  +--------+--------+
  |                 |
Tomcat1          Tomcat2
  |                 |
  +--- Session -----+

二、安装 Tomcat(Debian)

sudo apt update
sudo apt install tomcat9 tomcat9-admin

如果用多台机器,每台都装同样版本 Tomcat


三、Tomcat 集群的两种核心方式

✅ 方式 1:Nginx 负载均衡(推荐)

1️⃣ 安装 Nginx

sudo apt install nginx

2️⃣ 配置 upstream

sudo nano /etc/nginx/conf.d/tomcat_cluster.conf
upstream tomcat_cluster {
    server 192.168.1.101:8080;
    server 192.168.1.102: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;
    }
}
sudo nginx -t
sudo systemctl restart nginx

✅ 优点

  • 简单
  • 性能好
  • 生产环境最常用

❌ 问题

  • 默认不共享 Session

四、Session 共享方案(关键)

✅ 方案 A:Session 复制(Tomcat 原生)

适合 小规模集群(2~4台)

1️⃣ 修改 server.xml

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

2️⃣ 应用 web.xml

<distributable/>

✅ 优点:简单
❌ 缺点:节点多时性能差


✅ 方案 B:Redis 存储 Session(强烈推荐)

适合 中大型集群

1️⃣ 安装 Redis

sudo apt install redis-server

2️⃣ Tomcat 使用 Redis Session Manager

  • 使用:tomcat-redis-session-manager
  • 或 Spring Session(如果是 Spring 项目)

✅ 优点

  • 无状态 Tomcat
  • 扩展性好

五、Session 粘滞(Sticky Session)

如果 不复制 Session,可用:

upstream tomcat_cluster {
    ip_hash;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

✅ 用户始终访问同一台 Tomcat
❌ 机器宕机 → 会话丢失


六、生产建议(重要)

✅ 推荐组合

  • Nginx + Tomcat
  • Redis Session
  • 无状态应用

✅ 避免

  • 大量节点使用 Session 复制
  • 单台 Tomcat 扛所有流量

七、你可以告诉我

我可以给你:

  • 完整 server.xml 示例
  • Docker + Tomcat 集群
  • Spring Boot + Redis Session
  • Debian + Keepalived 高可用

你现在是 几台机器?什么应用(普通 JSP / Spring)?

0 踩