百万级并发架构:LVS+Nginx+Keepalived详解!

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

百万级并发

在互联网高并发场景下,单台服务器很难支撑海量请求。

当系统访问量达到几十万甚至百万级并发时,通常会采用:

LVS + Nginx + Keepalived 的经典高可用负载均衡架构。

百万级并发架构:LVS+Nginx+Keepalived详解!-mikechen

这套架构曾广泛应用于电商、金融、社交、视频等大型互联网系统,是支撑百万级并发访问的经典解决。

 

百万级并发架构设计

整体架构设计,如下所示:

百万级并发架构:LVS+Nginx+Keepalived详解!-mikechen

                Internet
                     │
       ┌─────────────┴─────────────┐
       │                           │
  LVS Master                  LVS Backup
  Keepalived                 Keepalived
       │                           │
       └────────VIP漂移────────────┘
                     │
        ┌────────────┴────────────┐
        │                         │
     Nginx-1                  Nginx-2
        │                         │
  ┌─────┴─────┐             ┌─────┴─────┐
  │           │             │           │
App1       App2          App3       App4
  │           │             │           │
  └───────────┴─────────────┴───────────┘
                     │
                  Redis
                     │
                   MySQL

LVS 将请求以 DR(Direct Routing)模式转发给后端 Nginx 节点池(多台,可水平扩展)。

Nginx 作为七层反向代理/负载均衡器,进一步分发到应用服务器(Tomcat、Go、Node.js、PHP-FPM 等)或静态资源。

Keepalived:管理 VIP、主备切换、LVS 配置同步、健康检查。

 

LVS

Linux Virtual Server,提供 NAT、TUN、DR 三种模式。

百万级并发架构:LVS+Nginx+Keepalived详解!-mikechen

DR 模式 最适合高并发(返回流量不经过 LVS,性能最高)。

在互联网业务中,请求包通常很小(几百字节),而响应包很大(几 KB 到几 MB)。

DR 模式下,Nginx 回应数据时不需要经过 LVS,而是直接通过网关返回给客户端。

这彻底解放了 LVS 的下行带宽瓶颈,使其能轻松傲视百万级并发。

Keepalived

如果LVS宕机:整个网站不可访问,因此需要Keepalived。

百万级并发架构:LVS+Nginx+Keepalived详解!-mikechen

LVS Master
192.168.1.10
      │
 Keepalived
      │
Heartbeat
      │
 Keepalived
      │
LVS Backup
192.168.1.11

Keepalived 不仅检查对方服务器死活,还可以通过自定义脚本监控本机的 Nginx 或 LVS 进程。

一旦发现本机服务异常,主动降低自身权重或释放 VIP,让备机接管。

 

Nginx

LVS负责:TCP转发。

Nginx负责:HTTP处理。

百万级并发架构:LVS+Nginx+Keepalived详解!-mikechen

LVS
 │
 ▼
Nginx
 │
 ├── App1
 ├── App2
 ├── App3
 └── App4

例如:

HTTPS卸载;

静态资源缓存;

动静分离;

WebSocket;

API网关;

处理 SSL 终止、动静分离、限流、缓存、七层路由等。

自身也可配合 Keepalived 做双机热备,但结合 LVS 更强。

评论交流
    说说你的看法