百万并发下的Nginx + LVS 双层负载均衡方案

百万级并发场景

在处理百万级并发场景下,单一负载均衡器往往难以满足性能需求。

LVS(Linux Virtual Server):作为四层负载均衡器(基于TCP/UDP)。

擅长高吞吐量和低开销的分发,能轻松支撑百万级并发连接。

百万并发下的Nginx + LVS 双层负载均衡方案-mikechen

而Nginx作为七层负载均衡器(基于HTTP/HTTPS),更适合处理应用层逻辑。

如URL路由、内容缓存和SSL终止。

将两者结合成双层架构,能充分发挥各自优势。

 

第一层:LVS (Layer 4 – 传输层)

第一层(LVS):部署在网络边缘,负责四层 IP/端口层面的高效包转发与会话保持。

LVS 通过虚拟 IP(VIP)接收流量,并将连接采用 NAT、DR 或 TUN 模式转发到后端的 Nginx 节点。

发挥内核态转发的极高性能,减轻上层负载。

百万并发下的Nginx + LVS 双层负载均衡方案-mikechen

        ┌────────────┐
        │   Client   │
        └─────┬──────┘
              │
    ┌─────────▼─────────┐
    │   LVS (主/备)       │  L4
    │  Keepalived VIP    │
    └─────────┬─────────┘
              │
  ┌───────────▼───────────┐
  │     Nginx 集群          │  L7
  │  SSL / 路由 / 限流      │
  └───────────┬───────────┘
              │
┌─────────────▼─────────────┐
│     应用服务集群             │
└───────────────────────────┘

LVS 直接在内核空间处理报文,不建立 TCP 连接,只负责数据包的转发。

其效率极高,单台 LVS 配合高性能网卡,可支撑数十万甚至上百万的并发。

通常采用 Keepalived ,实现双机热备(Active-Standby)。

 

第二层:Nginx (Layer 7 – 应用层)

第二层(Nginx):部署多台 Nginx 作为七层网关。

承担 SSL/TLS 终止、HTTP 路由、请求拆分、静态缓存、限流与熔断等应用层功能。

Nginx 能结合健康检查和权重策略,对真实应用服务器(应用池)做细粒度调度与流量控制。

百万并发下的Nginx + LVS 双层负载均衡方案-mikechen

worker_processes auto;
worker_rlimit_nofile 200000;

events {
    use epoll;
    worker_connections 65535;
    multi_accept on;
}

Nginx 接收来自 LVS 的流量,进行 SSL 解密、URL 匹配、Header 修改、黑名单过滤、Gzip 压缩等复杂操作。

可以水平扩展 Nginx 集群,LVS 通过算法(如轮询、加权轮询),将流量均匀分发给后端的各个 Nginx 实例。

mikechen睿哥

10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。

评论交流
    说说你的看法