在 Ubuntu 上实现 Tomcat 负载均衡
方案一 Nginx 反向代理与负载均衡(推荐)
upstream tomcat_servers {
server 192.168.1.101:8080;
server 192.168.1.102:8081;
# 可按需增加权重、健康检查等
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://tomcat_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
方案二 Apache HTTP Server 负载均衡(支持 HTTP 与 WebSocket)
<VirtualHost *:82>
ProxyRequests Off
# WebSocket 集群
<Proxy balancer://wscluster>
BalancerMember ws://127.0.0.1:8080
BalancerMember ws://127.0.0.1:8082
</Proxy>
ProxyPass /project/wsApi balancer://wscluster/project/wsApi
ProxyPassReverse /project/wsApi balancer://wscluster/project/wsApi
# HTTP 集群(AJP 示例)
<Proxy balancer://tomcatcluster>
BalancerMember ajp://127.0.0.1:8010 route=jvm8080
BalancerMember ajp://127.0.0.1:8012 route=jvm8082
ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid
</Proxy>
ProxyPass / balancer://tomcatcluster/
ProxyPassReverse / balancer://tomcatcluster/
# 可选:负载均衡管理页面
<Location /balancer-manager>
SetHandler balancer-manager
</Location>
</VirtualHost>
会话保持与高可用
可选优化 动静分离
location /static/ {
alias /var/www/static/;
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
proxy_pass http://tomcat_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}