[译] 现代网络负载均衡与代理导论(2017)
来源: arthurchiao.art 原文: 20KB / ~ 450 行, 落本地
译者序
本文翻译自 2017 年 Nadia Eghbal 写的 Modern network load balancing and proxies (文末有 v1.0/v2.0 PDF).
核心议题: 为什么需要 LB/Proxy
数据中心 + 微服务 → 流量管理需求:
- 入口流量: 外部 → 内部 (north-south)
- 服务间: 微服务 A → B (east-west, 占比 80%+)
- 可观察性, 安全, 性能, 可靠性 都需要 LB/Proxy
两类 LB
| 类别 | L4 (传输层) | L7 (应用层) |
|---|---|---|
| 决策依据 | IP/Port | HTTP header / URL / cookie / body |
| 性能 | 高 (10M+ QPS) | 低 (100K-1M QPS) |
| 智能 | 弱 | 路由 / 重写 / 鉴权 / 限流 |
| 代表 | IPVS, HAProxy TCP mode, DNS LB | Envoy, NGINX, HAProxy HTTP mode |
| 加密终止 | 否 | 是 (SSL termination) |
现代 LB 的关键能力
- 配置动态化 — 不重启生效 (xDS API, Envoy)
- 可观察性 — metrics, tracing, logging (主动探针)
- 服务发现 — 集成 Consul / etcd / K8s Service
- 健康检查 — active / passive, 自定义规则
- 熔断 + 限流 — outlier detection, circuit breaker
- TLS termination + cert 管理
- 可编程 — WASM / Lua filter
数据面 vs 控制面
控制面: 配置 / 路由表 / 服务发现 (xDS API)
↓ 下发
数据面: 实际转发的进程 (Envoy, NGINX sidecar)Envoy 数据面 + Istio 控制面 是当前事实标准.
Sidecar vs DaemonSet vs 中心化
| 模式 | 优 | 劣 |
|---|---|---|
| Sidecar (每 pod 一个 Envoy) | 隔离好/无干扰 | 资源消耗大 |
| DaemonSet (每 node 一个) | 资源省 | 隔离差/单点故障 |
| 中心化 LB (独立集群) | 集中运维 | 延迟+一跳, 性能差 |
趋势: Sidecar (istiod + Envoy) 占主流, 配合 eBPF host-routing 减少 sidecar 跳数.
关键 takeaway
- LB/Proxy 已从"硬件 F5"演化到"软件 Sidecar"
- 未来: eBPF 内核态 LB (Cilium), WASM 扩展 (Envoy/Istio)
- 工程师必备: 理解 L4/L7 区别, 至少能调一个 NGINX/HAProxy, 知道 Envoy xDS 协议
完整原文含 2017 PDF 链接, Envoy/Istio 详解, 各种 LB 拓扑对比图, 代码片段 (NGINX config / Envoy bootstrap) — 落本地.