TB级流量分发需LVS+Nginx两级架构:LVS负责四层高性能转发,Nginx专注七层业务处理,Keepalived保障各层VIP高可用,配合内核调优、硬件协同与压测迭代实现数Tbps吞吐。

要实现支持 TB 级带宽的流量分发集群,单靠 Nginx 或 Keepalived 都无法独立完成——Nginx 是高性能 HTTP 反向代理与负载均衡器,Keepalived 提供 VIP 高可用和故障自动切换,二者结合可构建具备高可用、水平扩展能力的接入层。但真正支撑 TB 级(如 1–10+ Tbps)流量的核心,在于架构分层设计、内核调优、硬件协同与横向扩容,而非软件组合本身。
一、明确角色分工:Nginx 做七层分发,Keepalived 做 VIP 故障接管
Keepalived 不转发流量,只通过 VRRP 协议在主备节点间维护一个虚拟 IP(VIP)。客户端始终访问该 VIP,由当前 Master 节点上的 Nginx 实际处理请求。当主节点宕机,Keepalived 快速将 VIP 迁移到备用节点,Nginx 继续提供服务,实现秒级故障恢复。
关键配置要点:
- Nginx 实例需绑定到本地真实 IP,不要绑定 VIP(否则 Keepalived 切换时可能引发端口冲突或监听异常)
- Keepalived 的
vrrp_script应检测 Nginx 进程存活 + 端口可连通性(例如用 curl 检查健康接口),避免“进程在但服务挂”的脑裂场景 - 优先级(priority)、抢占模式(nopreempt)、通告间隔(advert_int)需根据网络延迟精细设置,生产环境建议 advert_int ≤ 1s,避免切换过慢
二、单节点性能挖潜:让单台 Nginx 承载 20–50 Gbps 流量
TB 级不是靠单机堆出来的,但单节点效率低会极大增加机器数量与运维成本。需从系统层和 Nginx 配置双路径优化:
- 内核参数调优:增大 net.core.somaxconn、net.ipv4.ip_local_port_range;启用 reuseport(Linux 3.9+),让多个 Nginx worker 进程直接绑定同一端口,消除 accept 锁争用
-
Nginx 关键配置:开启
reuseport、multi_accept on;worker_processes 设为 auto;worker_connections ≥ 65535;使用 epoll;关闭 access_log(或异步写入),错误日志设为 warn 级别 - 硬件适配:使用 25G/100G 多队列网卡,绑定 IRQ 到不同 CPU 核;启用 RPS/RFS 平衡软中断;关闭 NIC offloading(如 tso、gso)防止包重组异常
三、横向扩展架构:LVS + Nginx 两级分发是 TB 级主流方案
纯 Nginx 集群受限于七层解析开销,难以稳定承载超大并发连接与带宽。工业级 TB 流量普遍采用“L4 + L7”分层模型:
- 前端部署 DR 模式 LVS(或 DPDK 加速的自研四层网关),直接基于 IP+端口做高性能转发,轻松支撑 100G+ 单机吞吐
- LVS 后挂载多组 Nginx 集群(每组含 Keepalived 主备),按域名、URI 或 Header 做二级精细化路由
- Keepalived 在每组 Nginx 内保障本组高可用;LVS 层自身也可用 Keepalived 做主备,或采用 full-NAT+集群化 LVS(如 Alibaba 的 Tengine-LVS 混合架构)
此架构下,LVS 承担 90%+ 的连接建立与转发,Nginx 专注 SSL 卸载、鉴权、限流、动静分离等业务逻辑,整体吞吐可线性扩展至数 Tbps。
四、配套能力不可少:监控、日志、弹性与安全闭环
没有可观测性与自动化响应,TB 级集群等于裸奔:
- 用 Prometheus + Grafana 监控 Nginx stub_status、Keepalived 状态、网卡收发速率、CPU 软中断分布;设置 VIP 切换、连接数突增、5xx 上升等告警
- 接入层日志建议输出到 Kafka,再由 Flink/Logstash 实时分析攻击特征(如 CC、Slowloris),联动 WAF 或动态封禁
- 配合云平台或 K8s Operator 实现 Nginx 节点自动扩缩容(基于带宽利用率或连接数阈值)
- TLS 卸载尽量下沉到 LVS 或专用 TLS 加速卡(如 Intel QAT),避免 Nginx 成为加解密瓶颈
不复杂但容易忽略:TB 级不是配置出来的,是压测出来、调优出来、迭代出来的。从单节点极限压测开始(如使用 wrk2、go-wrk 模拟百万并发),逐步验证网络栈、CPU cache、内存带宽等瓶颈,再决定是否上 LVS、是否切分集群域、是否启用 QUIC 或 HTTP/3。Keepalived + Nginx 是可靠底座,但真正的容量,藏在每一处内核参数、每一个中断绑定、每一次连接复用里。











