linux nginx各种负载均衡方法及适用场景

葫芦的运维日志

下一篇 搜索 上一篇

浏览量 131

2017/03/31 16:53


以下是Nginx中常用的负载均衡策略及配置示例,结合实战场景和最佳实践整理:


一、轮询策略(Round Robin)

默认策略,按服务器列表顺序分发请求,适用于服务器性能相近的场景。

http {
    upstream backend {
        server 192.168.1.101:8080;
        server 192.168.1.102:8080;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

二、加权轮询(Weighted Round Robin)

根据服务器性能分配权重,权重越高流量占比越大:

upstream backend {
    server 192.168.1.101:8080 weight=3;  # 承担60%流量(3/(3+2))
    server 192.168.1.102:8080 weight=2;  # 承担40%流量
}

适用场景:服务器配置不均衡时(如新老服务器混合部署)。


三、IP哈希策略(IP Hash)

会话保持型策略,同一客户端IP始终分配到同一后端服务器:

upstream backend {
    ip_hash;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

注意事项

  1. 后端服务器宕机会导致会话丢失

  2. 动态IP或代理场景可能失效


四、最少连接策略(Least Connections)

优先分配请求到当前连接数最少的服务器,适合处理长连接场景(如WebSocket):

upstream backend {
    least_conn;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

五、哈希策略(Hash)

根据自定义参数(如URL、请求头)分配请求,适用于缓存优化场景:

upstream backend {
    hash $request_uri consistent;  # 按请求URI分配
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

六、健康检查配置

增强服务可靠性的关键配置:

upstream backend {
    server 192.168.1.101:8080 max_fails=3 fail_timeout=30s;
    server 192.168.1.102:8080 max_fails=3 fail_timeout=30s;
}

参数说明:

  • max_fails:允许失败次数

  • fail_timeout:故障服务器暂停服务时间


七、高级场景配置

  1. 灰度发布:通过权重逐步切流

    upstream backend {
    server new_server:8080 weight=1;  # 10%流量
    server old_server:8080 weight=9;  # 90%流量
    }
    
  2. 备份服务器:主服务器不可用时自动切换

    upstream backend {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080 backup;
    }
    

     

策略选择建议

场景 推荐策略 特点
无状态服务 轮询/加权轮询 简单高效
会话依赖型 IP哈希 会话保持
长连接服务 最少连接 负载均衡
缓存优化 哈希策略 资源复用

实际部署时建议结合keepalived实现高可用架构,并通过压力测试验证配置效果。

葫芦的运维日志

打赏

上一篇 搜索 下一篇
© 冰糖葫芦甜(bthlt.com) 2021 王梓打赏联系方式 陕ICP备17005322号-1