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

百万并发架构场景

在面对百万级并发访问的互联网业务时,单一服务器难以承载高并发、与高可用需求。

Nginx + LVS + Keepalived 架构 ,通常用于构建能够处理百万并发请求的四层(网络层)和七层(应用层)结合的系统。

图解百万并发架构:Nginx + LVS + Keepalived实战!-mikechen

客户端(公网流量) 
  ↓ 
LVS 主节点 (VIP: e.g., 192.168.1.100) ←→ LVS 备节点 (Keepalived 管理切换)
  ↓ (DR模式转发)
Nginx 集群 (e.g., 192.168.1.11~13, 每个Nginx绑定VIP到lo:0接口)
  ↓ (七层代理)
后端应用服务器(如Tomcat集群)

这是一个典型的四层 + 七层组合的高并发高可用方案。

前面用 LVS 做四层负载均衡 、与Keepalived 做 VIP 漂移、和故障切换;

后面用 Nginx 集群做七层反向代理、和动静分离,可以稳定支撑百万级并发连接。

 

LVS层架构设计

LVS 工作在内核态,可实现非常高的包转发性能,适合百万级连接。

图解百万并发架构:Nginx + LVS + Keepalived实战!-mikechen

主要:处理入口流量,四层转发到Nginx集群,避免Nginx直接暴露公网。

在高并发实战中,LVS-DR 模式是最常用的。

LVS 将客户端请求的 MAC ,改为目标服务器 MAC 并在二层直接转发。

后端服务器,用真实 IP 回复客户端(无需再次经过 LVS)。

消耗最低、吞吐大、后端响应不走负载节点,转发开销小,适合高吞吐场景。

Nginx层架构设计

Nginx 在此架构中扮演第二级(七层)负载均衡,和反向代理的角色。

图解百万并发架构:Nginx + LVS + Keepalived实战!-mikechen

七层处理(如URL路由、会话保持),横向扩展支持高并发。

worker_processes auto;  # 根据CPU核心
worker_connections 65535;  # 最大连接数

http {
    upstream backend {
        server 192.168.1.201:8080 weight=1;  # 后端Tomcat
        server 192.168.1.202:8080 weight=1;
        keepalive 64;  # 长连接
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            health_check;  # 内置健康检查
        }
        location /health {  # LVS健康检查接口
            return 200 'OK';
        }
    }
}

 

Keepalived架构设计

主要用于:监控LVS和Nginx状态,主节点故障时VIP漂移到备节点,切换时间<1秒。

因为:LVS 和Nginx,本身不具备健康检查、和高可用能力。

图解百万并发架构:Nginx + LVS + Keepalived实战!-mikechen

vrrp_script chk_nginx {  # 检查Nginx脚本
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -5
    fall 3
    rise 2
}

Keepalived 提供 VIP 主备切换,结合健康检查快速剔除故障节点,保障服务连续性。

mikechen睿哥

10年+一线大厂架构实战专家,就职于阿里、淘宝等一线大厂,操盘多个亿级大厂核心项目。

评论交流
    说说你的看法