企业级负载均衡需分层设计(DNS/LVS/Nginx)、按协议选模式(DR/TUN/HTTP2等)、多维健康检查、安全加固与可观测性建设。

企业级负载均衡不是简单加一台Nginx或配个LVS就能落地的,它必须嵌入整体架构分层中,兼顾性能、可用性、可观测性和演进弹性。核心在于“按需分层、协议对齐、流量可控、故障可切”。
分层接入:四层与七层各司其职
真实生产环境极少只用单一负载均衡层级。典型企业架构采用三级接入链路:
- DNS层(全局调度):基于GSLB实现地域/运营商/健康度路由,如将北京用户导向华北集群,故障时自动切至华东备用集群
- LVS(四层入口):部署在IDC出口或云上高可用虚拟IP(VIP),承接所有TCP/UDP流量,处理SSL卸载前的原始连接,支持10万+并发连接,避免Nginx成为连接瓶颈
- Nginx/HAProxy(七层网关):负责HTTP/HTTPS解析、URL重写、Header注入、限流熔断、灰度标透传等,与业务服务解耦,不直接暴露后端地址
协议与模式匹配:选对模式比调优更重要
不同协议和部署约束决定底层转发模式:
- TCP类长连接服务(如MySQL、Redis、gRPC)→ 优先用LVS+DR模式,零拷贝+同网段直连,延迟压到200μs内
- 跨VPC或混合云场景 → 选用LVS+TUN模式,封装开销可控,避免ARP广播限制
- HTTPS终端+动静分离需求 → Nginx启用HTTP/2 + OCSP Stapling + Brotli压缩,upstream配置keepalive连接池(建议512),避免频繁建连
- WebSocket或SSE长连接 → 必须关闭Nginx默认的proxy_read_timeout(设为-1或超大值),并开启proxy_http_version 1.1和Connection “upgrade”
健康检查与故障切换:不能只靠心跳
基础TCP端口探测易误判,企业级需组合多维指标:
- 主动探测:Nginx用health_check指令配置HTTP探针,路径返回200且含"status":"ok" JSON体;LVS通过ipvsadm -e指定check方式(如tcp_check或http_get)
- 被动学习:采集后端real server的5xx比率、平均响应时间(P95 > 1s则降权)、连接拒绝率(>5%则临时摘除)
- 平滑摘除:新版本上线前,先将权重设为1(原为5),观察10分钟无异常再逐步升权;下线节点前发送SIGUSR2使Nginx停止接受新连接,待活跃连接自然退出
安全与可观测性加固要点
负载均衡器本身是攻击面和监控盲区,需同步建设:
- 禁用HTTP TRACE/OPTIONS方法,添加add_header X-Content-Type-Options nosniff;
- 所有上游通信启用mTLS,Nginx用ssl_client_certificate + ssl_verify_client optional_no_ca校验客户端证书指纹
- 开启$upstream_addr $upstream_response_time $upstream_http_x_request_id日志字段,接入ELK或Prometheus+Grafana,关键看:请求分布熵值(越接近1越均匀)、失败请求Top3后端、慢请求占比突增告警
- 配置geoip模块识别恶意IP段,结合limit_req zone=abuse burst=5 nodelay做基础防护


















