核心要点

Traefik Proxy 在 Kubernetes 中实现 L7 高级负载均衡的核心机制可分为四类:加权调度流量镜像会话保持跨环境健康检查

加权轮询(WRR)与渐进式交付

WRR 的核心价值不在”轮询”本身,而在于通过动态调整权重实现渐进式交付。Traefik Service 抽象允许在不停机的前提下,将流量从 v1 逐步切向 v2——这本质上是用负载均衡器做部署策略,而非单纯做流量分发。

关键洞察:部署(deploy)和发布(release)是两个独立事件。你可以随时把新版本部署到集群,但只有开始把真实流量路由过去,才叫发布。WRR 权重从 0 缓慢上调的过程,就是把发布风险摊薄到时间轴上的过程。

流量镜像(Mirroring)

镜像会把请求复制到另一组后端,但不返回响应给客户端。与渐进式交付相比,镜像的优势是零用户影响——即使新版本返回错误,用户也感知不到。它的适用场景是:用生产流量做 shadow testing,通过日志和指标验证新版本行为,而不是通过用户反馈。

粘性会话(Sticky Sessions)

Traefik 用 Set-Cookie 实现客户端与后端的亲和性。当后端故障时,会话会被重新绑定到健康实例。这个机制解决的典型问题是:无状态负载均衡器把同一个用户的请求打到不同 Tomcat 实例,导致反复建立新会话。粘性会话是有状态服务在无状态基础设施上运行的妥协方案。

嵌套健康检查(Nested Health Checks)

这是 Traefik File provider 独有的高级特性,允许在多层后端(如跨数据中心、或 Kubernetes + VM 混合环境)上做层级健康检查。例如:先检查数据中心级 endpoint 是否健康,再检查该数据中心内具体实例。这对混合云迁移多活架构特别有用——你可以把传统 VM 上的应用和 Kubernetes 上的新版本放进同一个 server pool,用 WRR 逐步切流。

实践启示

  • 负载均衡器不只是”把请求分出去”,它是发布策略、测试策略、故障隔离策略的承载面
  • 在 Kubernetes 中,Traefik 的 CRD 让 L7 规则成为声明式配置的一部分,但高级特性(如嵌套健康检查)仍需 File provider,这意味着你需要用 ConfigMap 管理配置文件——这引入了一个需要维护的额外配置层
  • 渐进式交付和镜像可以组合使用:先用镜像做无风险验证,再用 WRR 做真实切流

来源信息

相关页面