易君召
发布于 2026-09-18 / 作者:易君召 / 1 阅读
0

服务器集群负载均衡策略分类

负载均衡策略一般分为静态策略(不感知后端真实负载)动态策略(根据后端实时状态调度),不同组件(Nginx、LVS、HAProxy、云 LB、K8s Service)支持的策略略有差异。

一、静态负载均衡策略

调度规则提前定义,不检查后端服务器当前连接数、CPU、内存,只按算法分发请求。

1. 轮询(Round Robin)

默认策略,请求依次转发给后端每台服务器,平均分配。

  • ✅ 优点:简单,适合后端性能一致、无状态服务

  • ❌ 缺点:无法区分服务器负载;长连接、请求耗时差异大时不均衡

  • 适用:静态资源、短连接 API,后端硬件配置相同

2. 加权轮询(Weighted Round Robin,WRR)

给每台机器配置权重,权重越高分到的请求越多。

  • ✅ 优点:适配后端服务器性能不一样的场景,高配机器承担更多流量

  • ❌ 缺点:权重固定,不能感知实时负载;突发长请求会造成不均衡

  • 适用:混合配置服务器集群

3. IP 哈希(IP Hash)

对客户端 IP 做哈希计算,同一个客户端 IP 永远调度到同一台后端。

  • ✅ 优点:会话保持,不需要额外 session 共享

  • ❌ 缺点:单点故障时该 IP 用户会话丢失;容易哈希倾斜(部分机器流量过大);NAT 出口场景大量用户共用 IP,负载不均

  • 适用:需要会话保持、无 session 共享方案的场景

变种:源端口哈希、URL 哈希,按 URL / 端口哈希,同一资源固定打到同一后端,适合缓存集群。

4. 一致性哈希(Consistent Hash)

相比普通 IP Hash,后端节点增减时,只有少量哈希映射失效,大量会话不受影响。

  • ✅ 优点:节点扩容 / 缩容时,缓存失效范围小

  • ❌ 缺点:实现复杂;节点少时容易负载倾斜

  • 适用:Redis 集群、对象存储、缓存服务

5. 最少连接数(静态版很少,属于动态)

归到下面动态策略

二、动态负载均衡策略

调度器实时采集后端连接数、响应时间、CPU 负载,动态选择节点。

1. 最少连接(Least Connections,LC)

把新请求转发给当前活跃连接数最少的服务器。

  • ✅ 优点:自动适配请求处理时间差异,慢请求多的机器不会持续堆请求

  • ❌ 缺点:新上线空负载机器会瞬间涌入大量流量(流量尖峰)

  • 适用:长连接服务(数据库、WebSocket)、请求处理时间差异大的业务

2. 加权最少连接(Weighted Least Connections,WLC)

最少连接 + 权重,综合权重 + 当前连接数计算。

  • ✅ 优点:兼顾服务器硬件能力和实时连接数,企业最常用策略(LVS 默认)

  • 适用:混合配置后端,长 / 短连接混合业务

3. 最短响应时间(Least Response Time,LRT)

连接数 + 平均响应时间综合打分,优先选响应最快的节点。HAProxy、云 LB 常用。

  • ✅ 优点:不只看连接,还看服务处理快慢,自动避开卡顿节点

  • ❌ 缺点:需要采集响应耗时,有少量开销;瞬时抖动会误判

  • 适用:API 网关、Web 业务

4. 最少带宽 / 最少数据包

基于网络流量指标调度,适合大文件传输、流媒体集群。

三、其他特殊策略

1. 随机(Random)

随机挑选后端节点,简单,流量大时会趋近均衡;小流量场景不均衡。

2. 备用节点(Backup)

主节点全部不可用时,才启用备用服务器。

  • 适用:灾备、冷备服务

3. 本地优先(Local)

优先调度本机后端实例,跨机房 LB、K8s 本地域优先调度,减少跨机房流量费用。

4. 队列调度(队列限流)

每个后端设置最大连接队列,满了直接拒绝,防止雪崩。

四、常用负载均衡组件支持策略速览

组件

支持策略

Nginx

轮询、加权轮询、ip_hash、least_conn、url_hash(第三方)

LVS

RR、WRR、LC、WLC、LBLC、LBLCR、DH、SH

HAProxy

轮询、加权轮询、leastconn、LRT、源 IP 哈希、一致性哈希

云厂商 SLB

加权轮询、最小连接、IP 哈希

K8s Service

默认 iptables/ipvs:轮询;ipvs 支持更多(LC、WLC、一致性哈希)

五、选型建议(工程落地)

  1. 后端同配置、短连接无状态 Web/API:加权轮询

  2. 后端性能不一致、长连接:加权最少连接 WLC

  3. 缓存集群:一致性哈希

  4. 需要会话保持(尽量优先 Redis 共享 session,少用 IP Hash):IP Hash(备选)

  5. 跨机房多活:本地优先 + 加权轮询,配合健康检查

  6. 数据库代理:最少连接,禁止简单轮询(慢查询会堆积)

重要配套:健康检查不属于调度算法,但必须配套使用,自动剔除宕机 / 超时节点,否则任何策略都无法保证高可用。

补充:四层 vs 七层策略差异

  • 四层 LB(LVS、云四层 SLB):基于 IP + 端口,只能做连接级调度,看不到 HTTP 内容,不能按 URL、Cookie 调度;

  • 七层 LB(Nginx、HAProxy、云七层 SLB):解析 HTTP,支持 URL 哈希、Cookie 会话保持、按请求内容路由。