在 Debian 上搭建 Tomcat 集群,通常目标有两个:
下面按 生产可用方案 给你一个完整思路(以 Debian 11/12 + Tomcat 9/10 为例)。
+-------------------+
| Nginx / HAProxy |
| (负载均衡) |
+-------------------+
| | |
+-----+ | +-----+
| | |
Tomcat1 Tomcat2 Tomcat3
(Debian) (Debian) (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:
server.xml 基础配置修改 conf/server.xml:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
并开启:
<Manager className="org.apache.catalina.ha.session.DeltaManager"/>
⚠️ 缺点:
sudo apt install redis-server -y
使用社区方案(如 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"
✅ 优点:
sudo apt install nginx -y
nginx.confupstream 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 |
| Session | Redis |
| Tomcat | 无状态 |
| 节点数 | 2~N |
| 部署 | 自动化(Ansible) |
如果你愿意,我可以:
你现在是 测试环境 还是 生产环境?