在构建面向百万级别并发访问的互联网服务架构时,如何在保障高可用的前提下,实现高效的负载均衡与灵活扩展,是每一位架构师必须面对的挑战。一套经过实践检验的经典组合方案是:LVS(Linux Virtual Server)、Nginx 与 Keepalived。
这套方案的核心思想在于分层解耦与各司其职:
- Keepalived → 为 LVS 提供高可用保障,确保入口层不出现单点故障。
- LVS → 抵御海量连接洪峰,基于四层进行高效、低消耗的流量分发。
- Nginx → 进行七层精细化流量管理,实现反向代理、动静分离等高级功能。
- 后端应用集群 → 专注处理核心业务逻辑。

整体架构设计与层次解析
一个典型的 百万级高并发架构 会采用分层设计,从外到内大致如下:
Client
│
┌─────────────┐
│ VIP (漂移IP) │
└──────┬──────┘
Keepalived
┌─────────────┐
│ LVS 主备 │
└──────┬──────┘
四层转发
┌───────────────┐
│ Nginx 集群 │
└──────┬────────┘
反向代理
┌───────────────┐
│ 后端应用集群 │
└───────────────┘
LVS 前端:高可用四层负载均衡
这一层由两台部署了 LVS(Director) 和 Keepalived 的服务器组成。它们共同对外提供一个 VIP(Virtual IP),作为服务的唯一入口。
- 工作模式:通常采用 DR(Direct Routing) 模式。在此模式下,LVS 只修改数据包的 MAC 地址,而不修改 IP 地址,响应数据包由真实服务器直接返回给客户端。这种方式性能极高,几乎没有带宽瓶颈,非常适合 高并发 场景。
- 技术本质:LVS 是 Linux 内核的一部分,称为 IPVS(IP Virtual Server)。它工作在网络层(四层),不解析任何应用层协议(如 HTTP)。
- 特点:
- 不解析 HTTP 内容。
- 不处理具体的请求内容。
- 仅负责 TCP/UDP 连接的转发。
- 优势:正是由于这种极简的设计,LVS 的 CPU 和内存消耗极低,单台服务器就能轻松支撑几十万到上百万的并发连接,是构建高并发架构入口的理想选择。

Nginx 中间层:七层应用负载与治理
由多台 Nginx 服务器组成集群,接收来自 LVS 分发的流量。
- 核心职责:作为七层负载均衡器,负责 HTTP/HTTPS 协议的解析、终止,并在此基础上实现丰富的应用层功能,如反向代理、请求限流、Gzip 压缩、静态缓存、URI 路由等。
- 流量转发:经过 Nginx 处理后的请求,会被转发到后端的 Web 服务器或应用服务器集群。
后端应用层:业务处理与水平扩展
这是真正的业务逻辑处理单元,通常由多台 Web/应用服务器构成。在这一层之后,还可以根据业务需要,接入缓存集群(如 Redis)、消息队列(如 Kafka)、分库分表后的数据库集群等,实现架构的纵深扩展。
如何实现高可用?
高可用性贯穿整个架构:
- LVS 层高可用:Keepalived 通过 VRRP 协议在两组 LVS 之间实现 VIP 漂移。当主 LVS 节点发生故障时,备用节点会在极短时间内接管 VIP,实现故障无缝切换。
- 服务健康检查:Keepalived 可以配置对后端 Nginx 节点进行健康检查。如果发现某个 Nginx 服务不可用,LVS 会将其从负载均衡池中自动摘除,确保流量只分发给健康的节点。
高并发性能优化要点
要支撑百万并发,除了架构设计,细致的调优必不可少。
LVS 优化
- 坚持使用 DR 模式,规避 NAT 模式的性能瓶颈。
- 根据后端服务器性能差异,使用
wrr(加权轮询)或 wlc(加权最小连接)等调度算法。
- 在大规模集群中,可考虑使用
ipvs-sync 等工具同步多个 LVS 节点的会话状态。
Nginx 优化
- 配置
worker_processes auto; 以匹配 CPU 核心数。
- 调高
worker_connections 值(例如 65535)。
- 确保使用高效的
epoll 事件驱动模型(Linux 下默认)。
- 启用
gzip 压缩、合理配置静态资源缓存。
- 单机 Nginx 经过优化可处理 10万+ 并发,通过横向扩展 Nginx 集群节点数,即可将整体处理能力推向百万级别。
系统与内核调优
- 扩大本地端口范围:
net.ipv4.ip_local_port_range = 1024 65535
- 增加进程可打开的文件描述符数量:
ulimit -n 100000
- 使用
ipvsadm -lnc 命令实时监控 IPVS 的连接状态。
扩展策略
- 横向扩展:随着流量增长,可以水平添加更多的 Nginx 节点和后端应用服务器节点。
- 动态治理:结合完善的健康检查机制,动态剔除故障节点。
- 动静分离与 CDN:将静态资源(图片、CSS、JS)剥离,并使用 CDN 进行分发,可以极大减轻后端 负载均衡 和应用服务器的压力。

总结
LVS + Keepalived + Nginx 的组合,通过四层与七层负载均衡的分工协作,以及 Keepalived 提供的高可用保障,为构建稳定、高性能的百万级并发服务架构提供了一个坚实可靠的方案。它清晰的分层模型也使得系统在扩展和维护时更加灵活和方便。如果你想深入了解更多关于 分布式系统 和 高可用 的架构知识,欢迎到专业的 技术论坛 进行交流探讨。
|