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 -tbash
nginx -s reload通过调整 upstream 配置,可以灵活实现不同场景的负载均衡需求。