负载均衡策略有哪些?如何配置?

  • 轮询(默认):均分请求到各后端。

  • 加权轮询server backend1 weight=3;

  • IP哈希ip_hash; 同一客户端固定到同一后端。

  • 最少连接least_conn;

nginx
 

1. IP哈希(ip_hash)

定义

Nginx通过客户端的IP地址计算哈希值(hash),将同一IP的请求固定分配到同一台后端服务器
(例如:客户端A的IP哈希后固定分配到服务器1,客户端B分配到服务器2)

作用

  • 会话保持(Session Persistence):确保同一用户的多次请求由同一台后端服务器处理,避免因多台服务器间会话不同步导致的问题(如登录状态丢失、购物车数据不一致)。

  • 一致性:适用于依赖本地缓存或需要保持上下文的应用场景(如WebSocket长连接)。

配置示例

nginx
 
复制
 
下载
upstream backend {
    ip_hash;  # 启用IP哈希策略
    server backend1.example.com;
    server backend2.example.com;
}

优缺点

  • ✅ 优点:简单实现会话一致性,无需额外配置会话共享(如Redis)。

  • ❌ 缺点

    • 如果后端服务器宕机,哈希映射可能失效(需配合健康检查)。

    • 如果客户端IP分布不均(如大量请求来自同一IP),可能导致负载不均衡。


2. 最少连接(least_conn)

定义

Nginx将新请求分配给当前活跃连接数最少的后端服务器。
(例如:服务器1有10个连接,服务器2有5个连接,新请求会优先发给服务器2)

作用

  • 动态负载均衡:根据后端服务器的实时负载分配请求,避免某些服务器过载。

  • 公平性:适合处理时间差异较大的请求(如部分请求耗时较长,部分较短)。

配置示例

nginx
 
复制
 
下载
upstream backend {
    least_conn;  # 启用最少连接策略
    server backend1.example.com;
    server backend2.example.com;
}

优缺点

  • ✅ 优点:动态适应服务器负载,资源利用率更高。

  • ❌ 缺点

    • 需要Nginx实时跟踪各服务器的连接数,增加少量计算开销。

    • 不适用于需要会话保持的场景(需额外配合会话共享机制)。


对比总结

策略核心逻辑适用场景注意事项
IP哈希 固定IP到固定服务器 需要会话保持的场景(如登录状态) IP分布不均时可能导致负载倾斜
最少连接 动态选择连接最少的服务器 请求处理时间差异大的场景 需配合健康检查,避免宕机服务器分配

实际应用建议

  • 选择IP哈希

    • 当应用依赖本地会话(如未使用分布式Session存储)。

    • 需要长连接保持(如WebSocket)。

  • 选择最少连接

    • 后端服务器性能差异较大或请求处理时间不稳定。

    • 高并发场景下追求更均衡的负载分配。

    •  
posted @ 2025-05-21 11:20  17601621550  阅读(49)  评论(0)    收藏  举报