Nginx + LVS + Keepalived 百万并发架构实战技术分析

一、新闻概述

1. 标题

百万并发架构实战:Nginx + LVS + Keepalived 架构

2. 发布时间

2025 年 1 月 15 日(资料整理)

3. 来源

架构师陈哥(微信公众号)

二、核心内容

1. 事件摘要

A. 主要内容

本文详细介绍了 Nginx + LVS + Keepalived 三层负载均衡架构,该架构是支撑百万级并发访问的主流解决方案。

B. 核心亮点

  • 三层架构设计:LVS(四层)+ Nginx(七层)+ 业务集群
  • 高性能:LVS 运行在内核态,可支撑百万级并发连接
  • 高可用:Keepalived 提供主备切换和健康检查
  • 灵活性:Nginx 提供丰富的七层路由功能

2. 关键信息

A. 涉及技术

  • LVS(Linux Virtual Server)
  • Nginx
  • Keepalived
  • VRRP 协议
  • DR 模式(Direct Routing)

B. 性能指标

  • LVS 可支撑数十万甚至上百万并发连接
  • 适用于互联网业务快速发展的场景

3. 背景介绍

A. 技术需求

在互联网业务快速发展的大背景下,支撑百万并发访问成为大型网站和分布式应用设计的关键目标。

B. 解决方案

Nginx + LVS + Keepalived 架构以其高性能、可扩展性和高可用性,成为常见的解决方案。

三、详细报道

1. 架构概述

A. 整体架构

graph TD
    Client[客户端] -->|请求| LVS[LVS 四层负载均衡]
    LVS -->|转发| Nginx1[Nginx 七层代理 1]
    LVS -->|转发| Nginx2[Nginx 七层代理 2]
    Nginx1 -->|HTTP路由| App1[业务服务器1]
    Nginx1 -->|HTTP路由| App2[业务服务器2]
    Nginx2 -->|HTTP路由| App3[业务服务器3]
    Nginx2 -->|HTTP路由| App4[业务服务器4]

架构图

B. 架构分层

客户端
    ↓
LVS(四层负载,抗并发)
    ↓
Nginx(七层负载,协议处理)
    ↓
业务集群

2. LVS 负载入口

A. 技术特点

LVS(Linux Virtual Server)是四层负载均衡解决方案,运行在内核态。

核心优势

  • 性能极高:运行在内核态,零拷贝技术
  • 抗并发能力强:轻松支撑数十万甚至上百万并发连接
  • 只负责转发:不解析 HTTP 协议内容,仅处理 TCP/UDP 数据包

B. 工作模式

LVS 支持多种工作模式,本文主要介绍 DR 模式(Direct Routing):

DR 模式特点

  • 请求经过 LVS,响应不经过 LVS
  • 真实服务器直接响应客户端
  • 性能最优,要求 LVS 和服务器在同一物理网络

C. LVS Director 架构

graph TB
    subgraph "LVS Director 集群"
        LVSMaster[LVS Master<br/>主节点]
        LVSSlave[LVS Slave<br/>备节点]
    end

    subgraph "Keepalived 管理"
        VRRP[VRRP 协议<br/>VIP 管理]
        Health[健康检查]
    end

    subgraph "ipvsadm 规则"
        Rules[DR 模式<br/>负载均衡规则]
    end

    LVSMaster --> VRRP
    LVSSlave --> VRRP
    VRRP --> Rules
    Health --> LVSMaster
    Health --> LVSSlave

LVS Director 架构图

3. Keepalived 高可用保障

A. 核心功能

Keepalived 是 LVS 集群的高可用保障组件。

主要功能

  • VIP(Virtual IP)管理:通过 VRRP 协议实现虚拟 IP 漂移
  • 主备切换:当主节点故障时,备节点自动接管 VIP
  • 健康检查:自动检测后端节点状态,剔除异常节点

B. VRRP 协议

VRRP(Virtual Router Redundancy Protocol)是虚拟路由器冗余协议。

工作原理

  • 主节点定期发送 VRRP 广播
  • 备节点监听广播
  • 主节点故障时,备节点根据优先级接管 VIP
  • 客户端始终通过 VIP 访问服务

C. 故障切换流程

sequenceDiagram
    participant C as 客户端
    participant VIP as 虚拟IP (VIP)
    participant M as LVS Master
    participant S as LVS Slave

    C->>VIP: 正常访问
    VIP->>M: 转发请求
    M->>C: 返回响应

    Note over M: 主节点故障

    S->>VIP: 检测到主节点故障
    S->>VIP: 接管 VIP
    VIP->>S: VIP 绑定到备节点

    C->>VIP: 继续访问
    VIP->>S: 转发请求
    S->>C: 返回响应

故障切换时序图

4. Nginx 七层反向代理

A. 部署位置

Nginx 可以部署为两种角色:

  • 后端真实服务器的七层代理
  • 独立的七层反向代理集群

B. 核心职责

Nginx 七层负载均衡功能

功能说明
HTTP/HTTPS 解析处理 HTTP 协议,SSL 卸载
路由与反向代理基于域名、路径、请求头路由
限流与熔断保护后端服务,防止雪崩
缓存支持静态资源缓存,减轻后端压力
灰度发布支持 AB 测试、金丝雀发布
健康检查自动检测后端服务状态

C. 架构优势

Nginx 不直接承受"连接洪峰",前面有 LVS 做缓冲:

  • LVS 处理大量并发连接
  • Nginx 专注于业务逻辑路由
  • 分层设计,职责清晰

四、技术细节

1. 数据流向分析

graph LR
    C[客户端] -->|DNS解析| VIP[VIP: 1.2.3.4]
    VIP -->|MAC地址替换| LVS[LVS Master]
    LVS -->|改写MAC地址| NG[Nginx集群]
    NG -->|HTTP路由| APP1[应用服务器1]
    NG -->|HTTP路由| APP2[应用服务器2]
    APP1 -->|直接响应| C
    APP2 -->|直接响应| C

数据流向图

DR 模式数据包处理流程

  1. 客户端请求到达 VIP
  2. LVS 接收请求,改写目标 MAC 地址为真实服务器 MAC
  3. 转发到 Nginx 服务器(不修改 IP 地址)
  4. Nginx 处理后转发到业务服务器
  5. 业务服务器直接响应客户端(不经过 LVS)

2. 性能分析

A. 各层性能特点

组件运行空间主要职责性能特点
LVS内核态TCP/UDP 转发极高,百万级并发
Nginx用户态HTTP 处理高,万级并发
业务服务器用户态业务逻辑取决于应用

B. 为什么需要分层

问题:为什么不单独使用 Nginx 或 LVS?

答案

  • 单独 LVS:无法处理七层逻辑(如基于路径的路由)
  • 单独 Nginx:用户态处理,性能不如内核态,连接数受限
  • 组合方案:LVS 抗连接洪峰,Nginx 处理业务逻辑,各司其职

3. 高可用保障

A. 多层高可用

graph TB
    subgraph "第一层:LVS 高可用"
        LVS_M[LVS Master]
        LVS_S[LVS Slave]
    end

    subgraph "第二层:Nginx 高可用"
        NG1[Nginx 1]
        NG2[Nginx 2]
        NG3[Nginx 3]
    end

    subgraph "第三层:应用高可用"
        APP1[应用集群]
        APP2[应用集群]
    end

    LVS_M -.VRRP.-> LVS_S
    LVS_M --> NG1
    LVS_M --> NG2
    LVS_S --> NG2
    LVS_S --> NG3
    NG1 --> APP1
    NG2 --> APP1
    NG2 --> APP2
    NG3 --> APP2

多层高可用架构

B. 故障场景处理

故障点检测机制处理方式
LVS Master 宕机VRRP 心跳超时Slave 接管 VIP
Nginx 宕机Keepalived 健康检查LVS 剔除异常节点
应用服务宕机Nginx 被动健康检查Nginx 转发到健康节点

五、影响分析

1. 行业影响

A. 技术趋势

  • 三层负载均衡架构已成为互联网行业标准实践
  • 开源解决方案(LVS + Nginx + Keepalived)成本优势明显
  • 云原生时代,该架构仍在物理机/虚拟机场景广泛应用

B. 替代方案对比

方案优点缺点适用场景
LVS + Nginx + Keepalived成熟稳定、成本低、性能高运维复杂传统IDC、私有云
硬件负载均衡(F5等)功能完善、易用昂贵、封闭大型企业
云负载均衡(ALB/SLB)托管服务、弹性成本随流量线性增长公有云

2. 技术趋势

A. 云原生演进

  • Kubernetes Service:基于 iptables/IPVS 的服务发现
  • Ingress Controller:类似 Nginx 的七层路由
  • 云厂商托管服务:逐步替代自建负载均衡

B. 技术融合

  • LVS 的 IPVS 模块被 Kubernetes 直接采用
  • Nginx 成为 Ingress Controller 主流实现
  • Keepalived 在边缘节点仍广泛使用

六、实践建议

1. 架构选型

适用场景

  • 日活百万级以上的互联网应用
  • 需要高并发、高可用的企业级系统
  • 自建机房或私有云环境

不适用场景

  • 初创期流量较小的应用
  • 纯公有云部署(建议使用云厂商托管服务)
  • 团队缺乏运维能力

2. 运维要点

A. 监控告警

  • LVS 连接数、丢包率
  • Nginx QPS、响应时间、错误率
  • Keepalived VIP 状态
  • 后端服务健康状态

B. 容量规划

  • LVS:根据并发连接数规划(单机可支撑 10 万+ 并发)
  • Nginx:根据 QPS 规划(单机可支撑 1 万+ QPS)
  • 业务服务器:根据应用性能规划

C. 安全防护

  • 限制 SYN flood 攻击
  • 配置访问频率限制
  • 定期检查漏洞
  • 确保 SSL 证书安全

3. 最佳实践

  1. 配置管理:使用配置管理工具(Ansible、SaltStack)
  2. 灰度发布:利用 Nginx 的灰度能力平滑上线
  3. 压测验证:上线前进行充分压测
  4. 文档完善:维护架构文档和应急预案
  5. 定期演练:定期进行故障切换演练

七、总结

Nginx + LVS + Keepalived 架构是经典的三层负载均衡解决方案,通过职责分离实现了高性能和高可用性的平衡:

  • LVS:内核态四层负载,抗连接洪峰
  • Nginx:用户态七层代理,灵活路由
  • Keepalived:高可用保障,主备切换

该架构经过互联网大厂多年验证,是支撑百万级并发的成熟方案。在云原生时代,虽然出现了更多托管服务,但理解这套架构的底层原理,对于构建高可用系统仍然具有重要意义。


参考资料

  1. 百万并发架构实战:Nginx +LVS+ Keepalived架构!
最后修改:2026 年 01 月 15 日
如果觉得我的文章对你有用,请随意赞赏