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

高并发是大型架构核心,下面我详解百万并发实战@mikechen

百万并发实战

百万并发实战:LVS+Nginx+Keepalived-mikechen

在高并发场景下(如百万级 QPS 或 TPS),单一负载均衡器容易成为瓶颈或单点故障。

Nginx + LVS + Keepalived 是经典的开源高可用负载均衡方案,常用于互联网后端服务(如 Web/API、游戏、电商)。

其中:LVS(Linux Virtual Server):四层(TCP/UDP)负载均衡,内核级,性能极高(单机轻松百万 TPS)。

Nginx:七层(HTTP/HTTPS)负载均衡 + 反向代理,支持路径路由、SSL 终结等。

Keepalived:基于 VRRP 协议的高可用工具,实现 LVS/Nginx 的主备切换(Failover),避免单点。

 

LVS层架构设计

百万并发实战:LVS+Nginx+Keepalived-mikechen

客户端(Internet) → VIP (e.g., 10.0.0.100:80) → LVS Director (主/备,Keepalived 管理 VIP 漂移)
                                           ├─ 主 LVS (10.0.0.10) → DR / TUN / NAT 模式转发
                                           └─ 备 LVS (10.0.0.11) → (故障时接管 VIP)
后端 RS (Real Server) → Nginx 集群 (e.g., 10.0.0.20, 10.0.0.21, ...)
                              └─ Nginx → Upstream 后端 App 服务器 (e.g., Tomcat / Node.js 集群)

首先,LVS 作为四层负载均衡方案。

具备极高的转发性能和低延迟特性,适合处理大量 TCP/UDP 连接。

将 LVS 部署,在前端作为第一级负载均衡器。

可通过 NAT、TUN 或 DR 模式将流量高效分发到后端服务器池。

从而,承担起流量入口的“大流量承载”角色。

LVS 的“”内核级转发“,使其在百万连接下仍能保持稳定,是构建大规模集群的基础。

 

Nginx层架构设计

百万并发实战:LVS+Nginx+Keepalived-mikechen

http {
    upstream backend {
        least_conn;  # 最少连接算法
        server 10.0.0.30:8080 weight=1;
        server 10.0.0.31:8080 weight=1;
    }
    server {
        listen 80;
        location / {
            proxy_pass http://backend;
            health_check;  # 健康检查
        }
    }
}

其次,Nginx 作为七层负载均衡与反向代理。

擅长处理 HTTP/HTTPS 协议的路由、缓存、分发与应用层优化。

将 Nginx 部署在后端应用节点或在 LVS 之后的第二级负载均衡位置。

可以实现更细粒度的请求分发、会话保持、动静分离与缓存加速。

Nginx 的配置灵活性与丰富的模块生态,使其能配合应用实现灰度发布、熔断限流与日志追踪等功能。

 

Keepalived架构设计

最后,Keepalived 提供高可用性(HA)方案。

通过 VRRP(虚拟路由冗余协议)实现主备切换,确保负载均衡器本身不会成为单点故障。

百万并发实战:LVS+Nginx+Keepalived-mikechen

vrrp_script chk_lvs {
    script "killall -0 ipvsadm"  # 检查 LVS 进程
    interval 2
    weight -20
}

在 LVS 集群中引入 Keepalived,可以将虚拟 IP 在多台 LVS 节点间透明漂移,保障入口 IP 的持续可达。

此外,Keepalived 的健康检查机制可实时剔除不健康节点,提升整体服务稳健性。

评论交流
    说说你的看法