Loading... # 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. 整体架构 ```mermaid 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 架构 ```mermaid 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 ```  ## 3. Keepalived 高可用保障 ### A. 核心功能 Keepalived 是 LVS 集群的高可用保障组件。 **主要功能**: - VIP(Virtual IP)管理:通过 VRRP 协议实现虚拟 IP 漂移 - 主备切换:当主节点故障时,备节点自动接管 VIP - 健康检查:自动检测后端节点状态,剔除异常节点 ### B. VRRP 协议 VRRP(Virtual Router Redundancy Protocol)是虚拟路由器冗余协议。 **工作原理**: - 主节点定期发送 VRRP 广播 - 备节点监听广播 - 主节点故障时,备节点根据优先级接管 VIP - 客户端始终通过 VIP 访问服务 ### C. 故障切换流程 ```mermaid 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. 数据流向分析 ```mermaid 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. 多层高可用 ```mermaid 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架构!](https://mp.weixin.qq.com/s/vdojw0p34eklVvfzJeL3sQ) 最后修改:2026 年 01 月 15 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏