Nginx 实现轮询算法(Round Robin)主要通过其内置的负载均衡模块 upstream
实现。轮询是 Nginx 默认的负载均衡策略,无需额外配置即可启用。以下是详细实现步骤和说明:
在 nginx.conf
的 http
块中定义 upstream
,并列出后端服务器:
http {
upstream backend {
# 默认就是轮询策略
server 192.168.1.100:80;
server 192.168.1.101:80;
server 192.168.1.102:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
100
、101
、102
三台服务器,循环往复。如果服务器性能不均,可通过 weight
分配权重:
upstream backend {
server 192.168.1.100:80 weight=3; # 3/5的请求
server 192.168.1.101:80 weight=1; # 1/5的请求
server 192.168.1.102:80 weight=1; # 1/5的请求
}
100
服务器接收 3 个,101
和 102
各接收 1 个。Nginx 会自动屏蔽故障节点,并支持动态调整:
upstream backend {
server 192.168.1.100:80 max_fails=3 fail_timeout=30s;
server 192.168.1.101:80 backup; # 备用服务器
}
max_fails
:允许失败的次数,超过后临时剔除。backup
:标记为备用服务器,仅当主服务器不可用时启用。least_conn
:非轮询,改用最小连接数策略。
nginx
upstream backend {
least_conn;
server 192.168.1.100:80;
server 192.168.1.101:80;
}
ip_hash
:基于客户端 IP 的固定分发(非轮询)。
nginx
upstream backend {
ip_hash;
server 192.168.1.100:80;
server 192.168.1.101:80;
}
bash
nginx -t
bash
nginx -s reload
通过调整 upstream
配置,可以灵活实现不同场景的负载均衡需求。