下面给你一个在 Debian 上搭建 Tomcat 集群的常用、可落地方案,适合大多数 Web 应用(会话无状态或有共享会话需求都可)。
典型结构:
Nginx / HAProxy
|
+-----+-----+
| |
Tomcat1 Tomcat2 (可扩展更多)
| |
共享存储 / 数据库 / Redis
apt update
apt install -y openjdk-17-jdk
java -version
useradd -m -s /bin/bash tomcat
cd /opt
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.x/bin/apache-tomcat-10.1.x.tar.gz
tar -xzf apache-tomcat-*.tar.gz
mv apache-tomcat-* tomcat
chown -R tomcat:tomcat /opt/tomcat
server.xml每个 Tomcat 节点:
<Engine name="Catalina" defaultHost="localhost">
可设置不同 jvmRoute(用于粘性会话):
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
upstream tomcat_cluster {
ip_hash;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
location / {
proxy_pass http://tomcat_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
适合小规模集群。
server.xml<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
或完整配置:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Manager className="org.apache.catalina.ha.session.DeltaManager"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"/>
</Channel>
</Cluster>
<distributable/>
(在 web.xml 中)
⚠️ 注意:
apt install redis-server
tomcat-redis-session-manager✅ 优点:
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=network.target
[Service]
User=tomcat
ExecStart=/opt/tomcat/bin/catalina.sh run
Restart=always
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start tomcat
tail -f /opt/tomcat/logs/catalina.out
✅ 推荐组合:
❌ 不推荐:
如果你愿意,我可以:
你现在是哪种使用场景?