Skip to content

[译] 现代网络负载均衡与代理导论(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/PortHTTP header / URL / cookie / body
性能高 (10M+ QPS)低 (100K-1M QPS)
智能路由 / 重写 / 鉴权 / 限流
代表IPVS, HAProxy TCP mode, DNS LBEnvoy, NGINX, HAProxy HTTP mode
加密终止是 (SSL termination)

现代 LB 的关键能力

  1. 配置动态化 — 不重启生效 (xDS API, Envoy)
  2. 可观察性 — metrics, tracing, logging (主动探针)
  3. 服务发现 — 集成 Consul / etcd / K8s Service
  4. 健康检查 — active / passive, 自定义规则
  5. 熔断 + 限流 — outlier detection, circuit breaker
  6. TLS termination + cert 管理
  7. 可编程 — 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) — 落本地.

基于 VitePress 构建