目录
[二、4 种常用负载均衡策略](#二、4 种常用负载均衡策略)
[2)IP 哈希(同一个 IP 永远访问同一台](#2)IP 哈希(同一个 IP 永远访问同一台)
[4)URL 哈希(同一个接口 / 资源固定一台)](#4)URL 哈希(同一个接口 / 资源固定一台))
一、最基础负载均衡(轮询)
在 nginx.conf 的 http 块内 加一个 upstream,然后在 location 里 proxy_pass 指向它。
XML
http {
# 1. 定义负载均衡池(名字随便起,比如 backend_servers)
upstream backend_servers {
server 127.0.0.1:8080; # 后端服务1
server 127.0.0.1:8081; # 后端服务2
server 127.0.0.1:8082; # 后端服务3
}
server {
listen 80;
server_name localhost;
location /api/ {
# 2. 代理到 upstream 名字
proxy_pass http://backend_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;
}
}
}
默认策略:**轮询(round-robin)**请求依次分给:8080 → 8081 → 8082 → 8080...
二、4 种常用负载均衡策略
1)权重轮询(性能不同机器用)
XML
upstream backend_servers {
server 127.0.0.1:8080 weight=3; # 访问3次
server 127.0.0.1:8081 weight=2; # 访问2次
server 127.0.0.1:8082 weight=1; # 访问1次
}
2)IP 哈希(同一个 IP 永远访问同一台
适合:登录会话、Session 不共享
XML
upstream backend_servers {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
3)最少连接(least_conn)
分给连接数最少的机器
XML
upstream backend_servers {
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
4)URL 哈希(同一个接口 / 资源固定一台)
XML
upstream backend_servers {
hash $request_uri;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
三、高可用配置(宕机自动剔除)
加上 max_fails、fail_timeout,机器挂了自动踢走,恢复后自动加回:
XML
upstream backend_servers {
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8081 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8082 backup; # 备用机,其他全挂才启用
}
参考文献:豆包