高并发处理能力是大型系统架构的核心挑战之一。本文将详细解析如何利用 Nginx、LVS 和 Keepalived 这一经典组合,构建能够支撑百万级并发的负载均衡与高可用架构。
这套组合因其技术成熟、资源消耗轻量以及处理效率高等特点,在实践中被广泛采用,是应对海量流量冲击的可靠方案。
架构全景与组合价值
在典型的百万并发架构中,Nginx、LVS(Linux Virtual Server)与 Keepalived 各司其职,协同工作。一个常见的部署层次如下:
┌──────── CDN ────────┐
│
┌──▼───┐ ┌──▼───┐
│ VIP │ Keepalived │ VIP │
└──┬───┘ └──┬───┘
│ (VRRP) │
┌───────▼──────────┐
│ LVS 主节点 │
└───────┬──────────┘
│
┌───────▼──────────┐
│ LVS 备节点 │
└────────┬─────────┘
│
┌──────────▼───────────┐
│ Nginx 集群 │
│ (10~50台可横向扩展) │
└──────────┬───────────┘
│
┌────────▼─────────┐
│ 业务服务集群 │
└──────────────────┘
在这个架构中,流量首先经过 CDN 加速,然后抵达由 Keepalived 保障高可用的 LVS 层,再分发到后端的 Nginx 集群,最终由 Nginx 将请求路由至具体的业务服务。这种分层设计清晰,便于扩展和维护。
LVS 层:四层流量分发引擎
LVS 工作在 OSI 模型的第四层(传输层),部署在网络边缘,专门负责处理海量的 TCP/UDP 并发连接并进行快速流量分发。

其最大优势在于工作在内核空间(Kernel Space),数据包转发效率极高,自身性能开销极小。因此,它非常适合作为整个系统的第一跳流量入口,单台 LVS 服务器就能支撑数十万甚至上百万的并发连接,是构建高并发架构的基石。关于如何设计这样的高并发架构,可以参考相关的系统设计专题。
为了实现 LVS 自身的高可用,避免单点故障,我们需要引入 Keepalived。
Keepalived:实现高可用与 VIP 漂移
Keepalived 基于 VRRP(虚拟路由冗余协议)协议,为 LVS 提供了虚拟 IP(VIP)管理器和故障转移能力。

在主备模式下,主 LVS 节点持有 VIP 并提供服务。Keepalived 会持续监控本机 LVS 服务状态。一旦主节点发生故障(如服务器宕机、网络中断或 LVS 服务停止),备节点上的 Keepalived 会立即检测到,并通过 VRRP 协议接管 VIP,从而将流量无缝切换到备用 LVS 节点,保障负载均衡层持续可用。其核心配置示例如下:
vrrp_instance VI_1 {
state MASTER # 初始状态为主
interface eth0 # 绑定VIP的网卡接口
virtual_router_id 51 # 虚拟路由器ID,主备须一致
priority 100 # 优先级,主节点应高于备节点
advert_int 1 # VRRP通告间隔(秒)
authentication {
auth_type PASS
auth_pass 1111 # 认证密码
}
virtual_ipaddress {
192.168.1.100 # 虚拟IP (VIP)
}
}
Nginx 层:七层应用代理与精细控制
经过 LVS 四层分发后,流量到达 Nginx 集群。Nginx 工作在第七层(应用层),主要承担反向代理和更精细的负载均衡职责。

Nginx 的核心价值在于:
- 协议终结:终结 HTTP/HTTPS 协议,减轻后端应用服务器的压力。
- 智能路由:可以根据 URL、请求头、Cookie 等信息进行复杂的路由决策。
- 流量治理:实现限流、缓存、动静分离、重写等高级功能。
- 扩展性:Nginx 集群可以轻松横向扩展,只需在 LVS 的配置中添加后端 Real Server 即可。
典型的请求流向如下所示:
客户端请求
↓
VIP (192.168.1.100)
↓
LVS+Keepalived(主:192.168.1.10, 备:192.168.1.11)
↓ DR模式直回
Nginx1(192.168.1.20) Nginx2(192.168.1.21) ...
↓
Tomcat1/应用集群
在这种模式下,LVS 通常采用 DR(Direct Routing)模式,数据包直接由后端 Nginx 服务器返回给客户端,极大地提升了转发效率。Nginx 作为核心的 Web 服务器和反向代理,其性能调优和配置管理是 运维 工作中的关键环节。
总结
通过 LVS(四层负载,高性能分发)、Keepalived(高可用,VIP漂移)和 Nginx(七层代理,精细控制)的组合,我们构建了一个层次清晰、能力互补、且具备高度可扩展性和可用性的架构。这个经典组合能够有效应对百万级并发场景,是许多互联网公司基础设施的坚实底座。
对于希望深入了解分布式系统、负载均衡及高可用实践的朋友,可以持续关注 云栈社区 上的技术分享与讨论。