我有二个jar包的API端口,8011和8012,请实现完整的单台二个端口负载。
以下是完整的单台双端口负载均衡配置:
http {
# API服务负载均衡组
upstream api-backend {
server localhost:8011 weight=1 max_fails=3 fail_timeout=30s;
server localhost:8012 weight=1 max_fails=3 fail_timeout=30s;
# 负载均衡策略
least_conn; # 最少连接数
# 连接池优化
keepalive 32;
keepalive_requests 100;
keepalive_timeout 60s;
}
server {
listen 80;
server_name localhost;
# API代理配置
location /api/ {
proxy_pass http://api-backend/;
# 代理头设置
proxy_set_header Host $http_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;
# 超时设置
proxy_connect_timeout 5s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# 缓冲设置
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
# 重试设置
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_next_upstream_tries 2;
proxy_next_upstream_timeout 3s;
}
}
}
关键配置说明:
负载均衡参数:
-
weight=1
:权重相等,平均分配 -
max_fails=3
:3次失败后标记不可用 -
fail_timeout=30s
:30秒后重新尝试 -
least_conn
:优先分配给连接数少的服务器
性能优化:
-
keepalive 32
:保持32个长连接 -
proxy_next_upstream
:自动故障转移