在 Debian 上做 Tomcat 集群,通常有两层含义,需要区分清楚:
下面给你一个 Debian 上最常见、可用的 Tomcat 集群方案。
Nginx (负载均衡)
|
+-- Tomcat1 (Debian)
+-- Tomcat2 (Debian)
说明:
sudo apt update
sudo apt install openjdk-17-jdk -y
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
编辑:
/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" />
sudo apt install nginx -y
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;
}
}
sudo nginx -t
sudo systemctl restart nginx
编辑:
/opt/tomcat1/conf/server.xml
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
并启用:
<Manager className="org.apache.catalina.ha.session.DeltaManager"/>
⚠ 注意:
Receiver示例(Redis):
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.RedisSessionStore"/>
</Manager>
/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)
如果你告诉我:
我可以直接给你 完整配置文件。