百万级负载架构是大型架构经常涉及的,下面我重点来详解如何实现百万级负载架构@mikechen
百万级并发架构
在大型网站、或高流量系统中,如何实现高并发、高可用、负载均衡是架构师必须面对的问题。
今天,我们来详解一套实战验证无数次的高并发架构组合:LVS + Nginx + Keepalived。
这套解决方案,被广泛用于电商、直播、门户…等对高可用性要求极高的业务中。
整体架构,如下图所示:

LVS集群作为最前端入口,负责四层负载均衡。
Nginx集群作为中间层,负责七层负载均衡、反向代理、静态资源处理。
后端多台Web/应用服务器集群。
Keepalived确保LVS层和Nginx层的高可用。
LVS
LVS(Linux Virtual Server):是一种基于Linux内核的四层负载均衡解决方案,主要用于将外部请求高效地分发到后端服务器集群中。
LVS 凭借内核级转发、极高的性能和稳定性,成为大型互联网和高可用集群的首选流量分发组件。

LVS 直接在内核空间处理转发,极大减少了上下文切换和资源消耗,单机可支撑百万级并发连接。
LVS 集群 (LVS Cluster):LVS Master (Director Server)+LVS Backup (Director Server)。
LVS Master:负责接收所有VIP上的请求,并通过LVS的DR模式(推荐),将请求直接转发给Nginx集群中Nginx服务器。
LVS Backup:处于待命状态,一旦Master发生故障。
Keepalived会提升Backup为Master,并接管VIP,实现服务无缝切换。
Nginx
Nginx接收LVS转发的请求,并进行七层处理。
比如:HTTP请求解析、URL重写、SSL卸载、会话保持、缓存…等。

worker_processes auto;
events {
worker_connections 10240;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain application/json application/javascript text/css;
upstream backend {
server 192.168.10.101:8080 max_fails=2 fail_timeout=10s;
server 192.168.10.102:8080 max_fails=2 fail_timeout=10s;
keepalive 32;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend;
}
location /health {
return 200 'ok';
add_header Content-Type text/plain;
}
}
}
Nginx再将请求,负载均衡到后端的Web/App服务器集群。
Keepalived
Keepalived 是一个用于实现服务高可用性(High Availability,HA)的软件,主要在 Linux 平台上运行。
LVS虽然性能卓越,但LVS Director Server本身也存在单点故障问题。
为了解决这个问题,我们需要引入Keepalived,为LVS集群提供高可用性。

与 LVS 结合,实现 LVS 节点的主备高可用,确保 VIP 始终可用。
与 Nginx 结合,保证 Nginx 故障后,VIP 自动切换至备用节点。
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。