1. 故障域隔离概述

1.1 什么是故障域

故障域(Failure Domain)是指在分布式系统中,当一个组件发生故障时,受其影响的范围边界。在云原生架构中,故障域定义了“一个故障点最多能影响多少服务”的物理或逻辑边界。常见的故障域包括:

  • 物理故障域:单台机器、单个机架、单个可用区(AZ)、单个地域(Region)。
  • 逻辑故障域:单个进程、单个线程池、单个连接池、单个租户的数据平面。
  • 网络故障域:单个 TCP 连接、单个 HTTP/2 流(Stream)、单个虚拟网络接口。

故障域隔离的核心思想是:将一个系统划分为多个互不依赖的独立单元,使得一个单元内的故障不会级联扩散到其他单元。在多租户场景下,每个租户的流量、连接、资源都应被限制在各自的故障域内。

关键概念:故障域 ≠ 可用区。可用区是云厂商提供的物理隔离边界,而故障域是架构设计时人为划定的逻辑隔离边界。Envoy 可以在两者之间建立精细的流控策略。

1.2 为什么需要故障域隔离

在微服务架构中,尤其是多租户环境下,缺乏故障域隔离会引发以下典型问题:

问题场景 表现 后果
租户间资源争抢 一个租户的突发流量耗尽连接池 其他租户请求被拒绝或超时
HTTP/2 队头阻塞 慢请求阻塞同一连接上的其他流 所有租户的延迟集体升高
级联故障 上游服务雪崩,下游重试风暴 整个集群不可用
安全边界模糊 恶意租户利用共享连接攻击 数据泄露或服务被滥用

故障域隔离带来的核心收益包括:

  1. 爆炸半径控制:将故障影响限制在最小单元内,避免“一个坏邻居拖垮所有人”。
  2. 资源公平性:通过流控和配额机制,确保每个租户获得预期的服务质量(SLO)。
  3. 可观测性边界:每个故障域可以独立采集指标、日志和追踪,便于快速定位问题。
  4. 渐进式发布:可以在单个故障域内灰度新版本,降低全量发布风险。
实践建议:在 Kubernetes 环境中,建议将每个租户的 Pod 调度到不同的故障域(如不同节点、不同可用区),并结合 Envoy 的 locality-aware 路由实现物理隔离。

1.3 Envoy 在故障隔离中的角色

Envoy 作为云原生时代的通用数据平面,在故障域隔离中扮演着边界网关和流控执行器的双重角色。它位于服务网格的数据平面,所有南北向和东西向流量都经过 Envoy,因此天然适合实施故障隔离策略。

Envoy 提供的故障隔离能力包括以下维度:

隔离维度 Envoy 机制 适用场景
连接级隔离 HTTP/2 连接池管理、每个上游集群独立连接池 防止一个租户的连接耗尽全局连接池
流级隔离 HTTP/2 流控(Stream Flow Control)、优先级调度 避免慢请求阻塞其他流的处理
路由级隔离 虚拟主机(Virtual Host)、路由匹配、权重分发 按租户、版本、环境分流到不同集群
熔断级隔离 熔断器(Circuit Breaker)、异常检测(Outlier Detection) 自动隔离故障上游实例
配额级隔离 全局速率限制(Rate Limit)、本地速率限制 限制每个租户的请求速率

下图展示了 Envoy 在多租户场景下的故障域隔离架构:

Envoy 多租户故障域隔离架构 租户 A 流量 HTTP/2 流组 租户 B 流量 HTTP/2 流组 租户 C 流量 HTTP/2 流组 Envoy 数据平面 连接池隔离 流优先级调度 熔断器 速率限制 异常检测 上游 A 可用区 1 上游 B 可用区 2 上游 C 可用区 3 故障域隔离边界说明 1. 每个租户的 HTTP/2 流组在 Envoy 内被分配到独立的连接池和流调度队列。 2. 熔断器和速率限制按租户粒度配置,一个租户的突发不会影响其他租户。 3. 上游集群按可用区部署,Envoy 通过 locality-aware 路由将流量限制在相同故障域内。 4. 异常检测自动隔离故障实例,防止级联扩散。

Envoy 的故障隔离能力通过 xDS 控制平面动态下发配置,无需重启进程。这使得运维人员可以在运行时调整隔离策略,适应不断变化的流量模式。

注意:Envoy 的故障域隔离并非“开箱即用”。需要结合控制平面(如 Istio)的配置管理,以及合理的资源配额规划,才能达到预期的隔离效果。错误的配置(如过大的连接池上限)反而可能放大故障域。

1.4 故障域隔离的层次模型

在实际部署中,故障域隔离通常分为三个层次,Envoy 在每个层次都有对应的实现:

层次 隔离粒度 Envoy 实现 典型配置
L1:物理层 节点 / 可用区 / 地域 Locality-weighted LB、区域感知路由 locality_lb_endpoint_weight
L2:连接层 TCP 连接 / HTTP/2 连接 连接池管理、最大连接数限制 max_connections、max_pending_requests
L3:应用层 HTTP 流 / 请求 / 租户 流控、速率限制、熔断、RBAC http_filters、rate_limit、circuit_breakers

这三个层次相互配合,形成纵深防御体系。物理层确保基础设施级隔离,连接层防止资源耗尽,应用层实现精细化的业务隔离。Envoy 的独特优势在于:它在一个进程中同时实现了这三个层次的隔离策略,避免了多代理串联带来的性能损耗。