在 Debian 上部署 Tomcat 集群,通常目标有两个:
下面给你一个实战可用的方案(Debian + Nginx + Tomcat 集群)。
客户端
↓
Nginx(负载均衡)
↓
Tomcat1 (Debian)
Tomcat2 (Debian)
Tomcat3 (Debian)
可选:
sudo apt update
sudo apt install -y openjdk-17-jdk
# 下载 Tomcat(示例 10.x)
cd /opt
sudo wget https://archive.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz
sudo tar -xzf apache-tomcat-10.1.20.tar.gz
sudo mv apache-tomcat-10.1.20 tomcat
创建用户(可选但推荐):
sudo useradd -r -s /bin/false tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
server.xml编辑:
/opt/tomcat/conf/server.xml
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443" />
或 HTTP:
<Connector port="8080"
protocol="HTTP/1.1"
address="0.0.0.0" />
在 server.xml 中:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
并在 web.xml 中:
<distributable/>
✅ 适合小规模集群
❌ 大规模不推荐(广播风暴)
sudo apt install nginx
编辑:
/etc/nginx/conf.d/tomcat.conf
upstream tomcat_cluster {
server 192.168.1.11:8080;
server 192.168.1.12:8080;
server 192.168.1.13: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;
}
}
upstream tomcat {
server 192.168.1.11:8009;
server 192.168.1.12:8009;
}
Tomcat 不再自己复制 Session
/opt/tomcat/lib
加入:
tomcat-redis-session-managerjediscontext.xml:
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0" />
/opt/tomcat/bin/startup.sh
访问:
http://nginx_ip
多次刷新,观察是否落到不同 Tomcat。
| 方案 | 适合场景 |
|---|---|
| Nginx + Tomcat | 最常用 |
| Tomcat 集群复制 | 小集群 |
| Redis Session | 大集群 ✅ |
| Keepalived + Nginx | Nginx 高可用 |
如果你愿意,我可以:
你现在是 测试环境还是生产环境?