Nginx 主要的几种负载均衡模式

Nginx 主要的几种负载均衡模式

1. 轮询 (Round Robin) - 默认模式

按顺序逐一分配请求到各个后端服务器。

nginx 复制代码
upstream backend {
    server 192.168.1.10;
    server 192.168.1.11;
    server 192.168.1.12;
}

2. 加权轮询 (Weighted Round Robin)

根据权重分配请求,权重越高,被分配的请求越多。

nginx 复制代码
upstream backend {
    server 192.168.1.10 weight=3;
    server 192.168.1.11 weight=2;
    server 192.168.1.12 weight=1;
}

3. IP 哈希 (IP Hash)

根据客户端 IP 地址进行哈希计算,同一 IP 的请求会被分配到同一台服务器,可以解决 session 共享问题。

nginx 复制代码
upstream backend {
    ip_hash;
    server 192.168.1.10;
    server 192.168.1.11;
    server 192.168.1.12;
}

4. 最少连接 (Least Connections)

将请求分配给当前连接数最少的服务器。

nginx 复制代码
upstream backend {
    least_conn;
    server 192.168.1.10;
    server 192.168.1.11;
    server 192.168.1.12;
}

5. 一致性哈希 (Consistent Hash)

需要第三方模块支持,根据指定的 key 进行哈希分配。

nginx 复制代码
upstream backend {
    hash $request_uri consistent;
    server 192.168.1.10;
    server 192.168.1.11;
    server 192.168.1.12;
}

6. 通用哈希 (Generic Hash)

可以基于任意变量进行哈希。

nginx 复制代码
upstream backend {
    hash $remote_addr;  # 基于客户端IP
    # hash $cookie_jsessionid;  # 基于cookie
    server 192.168.1.10;
    server 192.168.1.11;
}

7. 随机 (Random)

随机选择一台服务器(Nginx 1.15.1+ 版本支持)。

nginx 复制代码
upstream backend {
    random;
    server 192.168.1.10;
    server 192.168.1.11;
    server 192.168.1.12;
}

常用参数配置

nginx 复制代码
upstream backend {
    server 192.168.1.10 weight=5 max_fails=3 fail_timeout=30s;
    server 192.168.1.11 weight=3;
    server 192.168.1.12 backup;  # 备用服务器
    server 192.168.1.13 down;    # 标记为不可用
}

参数说明:

  • weight: 权重,默认为 1
  • max_fails: 允许请求失败的次数,默认为 1
  • fail_timeout: 失败超时时间,默认为 10 秒
  • backup: 备份服务器,只有其他服务器都不可用时才使用
  • down: 标记服务器永久不可用

最常用的模式:

  • 无状态应用:轮询、加权轮询、最少连接
  • 有状态应用:IP Hash、一致性哈希
相关推荐
欢喜躲在眉梢里17 小时前
CANN 异构计算架构实操指南:从环境部署到 AI 任务加速全流程
运维·服务器·人工智能·ai·架构·计算
weixin_5377658018 小时前
【容器技术】虚拟化原理与Docker详解
运维·docker·容器
胡斌附体18 小时前
docker健康检查使用
运维·docker·依赖·健康检查
摇滚侠18 小时前
2025最新 SpringCloud 教程,负载均衡 API 测试,笔记10
笔记·spring cloud·负载均衡
云飞云共享云桌面18 小时前
无需配置传统电脑——智能装备工厂10个SolidWorks共享一台工作站
运维·服务器·前端·网络·算法·电脑
福尔摩斯张18 小时前
《C 语言指针从入门到精通:全面笔记 + 实战习题深度解析》(超详细)
linux·运维·服务器·c语言·开发语言·c++·算法
虚伪的空想家19 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
火车头-11019 小时前
【docker 部署nacos1.4.7】
运维·docker·容器
虾..19 小时前
Linux 进程状态
linux·运维·服务器
测试者家园19 小时前
DevOps 到底改变了测试什么?
运维·自动化测试·软件测试·devops·持续测试·智能化测试·软件测试和开发