在 Debian 上配置 Tomcat 集群,通常目标有两个:
下面给你一套生产可用的标准做法。
| 角色 | 主机 | 说明 |
|---|---|---|
| 负载均衡 | 192.168.1.10 | Nginx |
| Tomcat节点1 | 192.168.1.11 | Tomcat 9 |
| Tomcat节点2 | 192.168.1.12 | Tomcat 9 |
所有节点 Debian 11/12 均可
apt update
apt install -y openjdk-17-jdk
useradd -r -m -d /opt/tomcat tomcat
cd /opt
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
tar -xzf apache-tomcat-9.0.85.tar.gz
mv apache-tomcat-9.0.85 tomcat
chown -R tomcat:tomcat /opt/tomcat
systemd 示例:
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now tomcat
server.xml编辑:
vim /opt/tomcat/conf/server.xml
<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">
node2 就写
jvmRoute="node2"
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
在应用的 WEB-INF/web.xml 加:
<distributable/>
适合 小集群(≤3 节点)
优点:
缺点:
已在上一步完成。
适合 中大型集群
apt install -y redis-server
Tomcat 使用:
tomcat-redis-session-manager
(Tomat 9 推荐:https://github.com/magro/redis-session-manager)
apt install -y nginx
vim /etc/nginx/conf.d/tomcat.conf
upstream tomcat_cluster {
ip_hash;
server 192.168.1.11:8080;
server 192.168.1.12: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;
}
}
nginx -t
systemctl reload nginx
http://example.com<distributable/>ntpdate)ufw allow 4000
Nginx
├── Tomcat1
├── Tomcat2
└── Tomcat3
↘ Redis(Session)
如果你愿意,我可以:
你现在是 测试环境还是生产环境?