Java服务在Linux上的负载均衡实现指南
一、方案总览
二、快速落地 Nginx 反向代理示例
http {
upstream backend {
server 192.168.1.11:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.12:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.13:8080 backup; # 备用节点
}
server {
listen 80;
location / {
proxy_pass http://backend;
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;
# 故障转移:遇到错误/超时/500/404时尝试下一台
proxy_next_upstream error timeout http_500 http_404;
}
}
}
三、HAProxy 示例与适用场景
global
log /dev/log local0
log /dev/log local1 notice
daemon
defaults
log global
mode http
option httplog
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server s1 192.168.1.11:8080 check
server s2 192.168.1.12:8080 check
server s3 192.168.1.13:8080 check backup
四、高可用与更高性能架构
五、应用层负载均衡与自研方案