NGINX 是一款高性能的 Web 服务器和反向代理服务器,其内置的负载均衡功能可以将客户端请求分发到多个后端服务器,从而提高系统的可用性、稳定性和处理能力。以下是关于 NGINX 负载均衡调度器的详细介绍:
一、负载均衡核心概念
负载均衡的目标是将流量均匀分配到多个后端服务器,避免单点故障和资源过载。NGINX 通过反向代理模式实现负载均衡:客户端请求先到达 NGINX,再由 NGINX 转发到后端服务器(如 Web 服务器、应用服务器等),最后将响应返回给客户端。
二、NGINX 负载均衡调度算法(策略)
NGINX 支持多种调度算法,用于决定如何将请求分配到后端服务器。以下是常用算法及配置示例:
1. 轮询(Round Robin,默认策略)
- 原理:按顺序依次将请求分配到后端服务器,不考虑服务器状态。
- 适用场景:服务器硬件配置相近,负载均衡需求简单。
- 配置示例:
upstream backend { server server1.example.com; server server2.example.com; server server3.example.com; }
2. 加权轮询(Weighted Round Robin)
- 原理:为不同服务器设置权重(
weight
),权重越高的服务器分配的请求越多,适用于服务器性能不均的场景。 - 配置示例:
upstream backend { server server1.example.com weight=3; # 权重为3(处理3倍请求) server server2.example.com weight=1; # 权重为1(默认) }
3. 最少连接(Least Connections)
- 原理:将请求分配给当前连接数最少的服务器,动态适应服务器负载变化。
- 配置示例:
upstream backend { least_conn; # 启用最少连接算法 server server1.example.com; server server2.example.com; }
4. 加权最少连接(Weighted Least Connections)
- 原理:结合权重和连接数,优先将请求分配给“权重/连接数”比值最高的服务器。
- 配置示例:
<