1. 多租户架构概述

1.1 多租户定义

多租户(Multi-Tenancy)是一种软件架构模式,其中单个软件实例或基础设施集群同时服务于多个独立的“租户”。每个租户在逻辑上相互隔离,拥有专属的数据、配置、流量和资源视图,但共享同一套底层系统。

在云原生服务网格场景下,多租户的核心目标是在共享 Envoy 代理实例的前提下,为不同业务线、不同团队或不同客户提供安全隔离、性能隔离和故障隔离。

关键区分:多租户 ≠ 多集群。多租户强调逻辑隔离,即使所有租户运行在同一个 Envoy 进程中,也必须保证一个租户的流量洪峰或配置错误不会影响其他租户。

1.2 Envoy 中的租户模型

Envoy 本身不直接定义“租户”概念,但通过其灵活的配置体系可以构建出清晰的租户模型。常见的实现方式包括:

  • Listener 级隔离:每个租户绑定独立的监听器(Listener),使用不同的端口或 IP 地址。
  • Filter Chain 级隔离:在同一个 Listener 内,通过 SNI 或 HTTP Host 头部匹配不同的 Filter Chain,路由到租户专属的配置。
  • Cluster 级隔离:每个租户拥有独立的上游集群(Cluster),包括专属的连接池、断路器参数和负载均衡策略。
  • Route Configuration 级隔离:通过虚拟主机(Virtual Host)和路由表(Route Table)实现租户粒度的流量治理。
隔离层级 Envoy 配置对象 隔离粒度 典型场景
L4 网络层 Listener / Filter Chain 端口 / SNI 金融核心 vs 外围业务
L7 应用层 Virtual Host / Route Host / Path 多品牌电商共享网关
连接池层 Cluster / Circuit Breaker 上游端点组 读写分离、高优租户
流控层 HTTP Connection Manager / 流控 Filter HTTP/2 流级别 突发流量隔离、慢客户端保护
Envoy 多租户模型架构 租户 A Listener A (端口 10001) Filter Chain A Route Config A Cluster A (连接池) 断路器: max 100 租户 B Listener B (端口 10002) Filter Chain B Route Config B Cluster B (连接池) 断路器: max 200 共享控制面 xDS 协议 Istiod / 控制面 租户配置隔离 RBAC / 认证 监控 & 审计 隔离 下发 每个租户拥有独立的 Listener、Route、Cluster 和断路器参数,共享 Envoy 进程但逻辑完全隔离

1.3 故障域概念与重要性

故障域(Failure Domain)是指系统中一个组件或一组资源发生故障时,所影响的范围。在多租户架构中,故障域的设计直接决定了爆炸半径——即一个租户的故障会扩散到多大范围。

核心原则:每个租户应该是一个独立的故障域。租户 A 的 HTTP/2 流控参数配置错误、流量突发或后端超时,不应导致租户 B 的连接池耗尽或请求被拒绝。

Envoy 中故障域的实现依赖于以下关键机制:

  1. 资源配额与限制:通过断路器(Circuit Breaker)为每个租户设置最大连接数、最大请求数、最大重试次数等硬限制。
  2. 流控参数隔离:HTTP/2 的流控窗口(Flow Control Window)、并发流限制(Max Concurrent Streams)等参数按租户独立配置。
  3. 超时与重试策略:每个租户拥有独立的请求超时、空闲超时和重试预算,防止慢租户拖垮全局。
  4. 优先级与调度:通过权重路由和优先级队列,确保高优租户在资源竞争时获得保障。
故障域隔离:爆炸半径控制 无故障域隔离(危险) 租户 A 突发 10000 请求/秒 租户 B 正常 100 请求/秒 共享连接池(无隔离) 最大连接数 200,被租户 A 全部占用 结果:租户 B 请求被拒绝,全局故障 有故障域隔离(安全) 租户 A 突发 10000 请求/秒 租户 B 正常 100 请求/秒 连接池 A max 150 连接池 B max 50 A 部分失败 B 完全正常 故障域隔离的核心:通过独立连接池和断路器,将故障爆炸半径限制在单个租户内

1.4 故障域的重要性总结

在多租户 Envoy 部署中,故障域设计直接关系到系统的可用性和可预测性。以下是故障域隔离带来的关键收益:

收益维度 说明 Envoy 实现手段
可用性提升 单个租户的故障不会导致全局服务中断 独立断路器、超时配置
性能可预测 每个租户的资源配额固定,避免“吵闹邻居”效应 连接池大小、流控窗口独立
安全隔离 租户无法通过资源耗尽攻击影响其他租户 RBAC + 资源配额
运维简化 故障定位范围缩小,爆炸半径可控 租户级监控指标、日志
合规性 满足金融、医疗等行业的数据隔离要求 Listener 级隔离 + 审计
常见误区:不要认为“只要用了 Envoy 就自动获得多租户隔离”。默认配置下,所有租户共享同一个连接池和流控参数,一个租户的突发流量会直接耗尽全局资源。必须显式配置断路器、独立连接池和 HTTP/2 流控参数,才能实现真正的故障域隔离。