在 Debian 上给 Tomcat 做负载均衡,常见做法有三种:Nginx 反向代理(最常用)、Apache + mod_jk / mod_proxy、Tomcat 集群(Session 复制)。下面给你一套实战最常用方案。
用户
|
Nginx (负载均衡)
|-- Tomcat1 (8080)
|-- Tomcat2 (8080)
sudo apt update
sudo apt install openjdk-17-jdk -y
sudo apt install tomcat10 -y
如果是多台服务器:
cp -r /opt/tomcat /opt/tomcat2
修改 server.xml 端口(8080 → 8081)
sudo apt install nginx -y
sudo nano /etc/nginx/conf.d/tomcat.conf
示例配置:
upstream tomcat_cluster {
least_conn;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
sudo nginx -t
sudo systemctl restart nginx
✅ 访问 http://服务器IP 即可
| 策略 | 说明 |
|---|---|
| round-robin | 默认,轮询 |
| least_conn | 最少连接(推荐) |
| ip_hash | 同一 IP 固定到一台(解决 Session) |
示例(ip_hash):
upstream tomcat_cluster {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
ip_hash;
spring-session<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
Nginx Plus 支持,开源可用:
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
systemctl status nginx
systemctl status tomcat10
journalctl -u tomcat10
✅ 最推荐方案
如果你愿意,我可以:
你现在是 单机还是多台服务器?