nginx双机热备中主从节点不负载分摊,仅vip主备接管;真正实现后端负载均衡的是upstream模块的轮询、加权轮询、ip hash、最少连接等策略,且主从nginx的upstream配置须完全一致。

Nginx 本身不直接参与“双机热备”中的负载分摊,它负责的是后端真实服务器(即应用服务器)之间的请求分发;而双机热备(主从模式)指的是前端两台 Nginx + Keepalived 组成的高可用代理层,它们之间不是负载分摊关系,而是主备接管关系——同一时刻只有一台对外提供服务,另一台待命。
所以需要先厘清两个层级:
- 第一层(高可用层):Nginx + Keepalived 构建的主从代理节点(如 192.168.10.21 和 192.168.10.22),共享一个虚拟 IP(VIP),仅主节点响应流量,从节点不处理用户请求,只做故障接管。
-
第二层(负载均衡层):单台运行中的 Nginx(无论是主还是已切换的从)通过
upstream模块,将客户端请求按策略分发给后端多台真实业务服务器(如 192.168.10.11/12/13)。
因此,“主从服务器负载分摊策略”这个说法在 Nginx 双机热备中是不成立的——主从之间不共担流量,也不轮换处理请求。真正承担负载分摊的是 Nginx 的 upstream 调度策略,且只作用于后端服务器集群。
以下是实际起作用的负载分摊策略(配置在每台 Nginx 的 upstream 块中):
轮询(Round Robin)
默认策略,请求依次分发到各后端服务器。自动剔除不可达节点(需配合健康检查)。适合后端服务器性能相近、无状态服务。
示例:
upstream backend {
server 192.168.10.11:80;
server 192.168.10.12:80;
server 192.168.10.13:80;
}
加权轮询(Weighted Round Robin)
按权重比例分配请求,适用于后端服务器硬件能力不均(如 CPU 核心数、内存差异大)。权重越高,接收请求越多。
示例:
upstream backend {
server 192.168.10.11:80 weight=3;
server 192.168.10.12:80 weight=1;
server 192.168.10.13:80 weight=1;
}
IP Hash(源地址哈希)
根据客户端 IP 计算哈希值,固定转发至同一台后端服务器。用于实现会话保持(Session Stickiness),适用于未做 Session 共享的 Web 应用。
注意:后端增减节点可能导致部分用户会话中断。
示例:
upstream backend {
ip_hash;
server 192.168.10.11:80;
server 192.168.10.12:80;
server 192.168.10.13:80;
}
最少连接(Least Conn)
优先将新请求发给当前活跃连接数最少的后端服务器。适合长连接或处理耗时不均的场景(如 WebSocket、文件上传)。
示例:
upstream backend {
least_conn;
server 192.168.10.11:80;
server 192.168.10.12:80;
server 192.168.10.13:80;
}
主从 Nginx 节点上的 upstream 配置必须完全一致,确保切换后行为无缝延续。Keepalived 只管 VIP 归属和进程存活检测(常配合 nginx 进程健康脚本),不干预请求分发逻辑。
不复杂但容易忽略











