1. 课程导论:多租户架构概述、故障域隔离的重要性、演练与风险控制的关系

1.1 多租户架构概述

多租户(Multi-Tenancy)是一种软件架构模式,允许单个软件实例同时服务于多个独立的租户(Tenant)。每个租户在逻辑上相互隔离,拥有专属的数据、配置、用户身份与资源配额,但共享底层的基础设施与平台服务。

维度 单租户架构 多租户架构
资源利用率 低,每个租户独占实例 高,共享实例与资源池
运维成本 线性增长,每租户独立部署 亚线性增长,统一运维
隔离粒度 物理/虚拟机级 进程/容器/命名空间级
故障半径 小,单实例故障不影响其他 大,共享层故障可能波及多租户
典型场景 私有化部署、政企专有云 SaaS 平台、公有云、混合云
关键认知:多租户不是简单的"多用户",而是资源复用 + 逻辑隔离 + 安全边界三位一体的架构设计。租户间共享计算、存储、网络层,但必须保证数据不串、性能不争、故障不扩散。

1.2 故障域隔离的重要性

故障域(Failure Domain)是指系统中一个组件失效后,会连带影响的其他组件集合。在多租户环境下,故障域隔离的目标是:将单个租户或单个组件的故障限制在最小范围内,避免级联扩散至整个平台。

故障域隔离的核心价值体现在三个层面:

  1. 可用性保障:防止"一颗老鼠屎坏了一锅粥",某个租户的异常流量、代码缺陷或配置错误不会拖垮其他租户。
  2. 安全合规:满足金融、医疗、政务等行业的合规要求,确保租户数据与操作边界不可越狱。
  3. 运维可控:支持灰度发布、蓝绿部署、金丝雀测试,降低变更风险。
实践原则:故障域隔离应遵循"最小爆炸半径"原则——每个故障域内的资源数越少,整体可用性越高。在 Kubernetes 集群中,通常将不同租户的 Pod 调度到不同节点组、不同可用区,甚至不同集群。
多租户故障域隔离概念模型 租户 A 故障域 Pod 组 A1 Pod 组 A2 数据卷 A 网络策略 A 租户 B 故障域 Pod 组 B1 Pod 组 B2 数据卷 B 网络策略 B 共享基础设施 API 网关 监控/日志 身份认证 资源调度器 隔离边界 隔离边界 故障域隔离:租户 A 或 B 内部故障不会跨越红色虚线边界影响对方,但共享基础设施故障仍可能波及所有租户

1.3 演练与风险控制的关系

故障域隔离不是"配置完就生效"的静态属性,而是需要持续验证与动态调整的运行时能力。演练(Drill)是检验隔离措施是否真正有效的唯一手段,风险控制则是演练的最终目的。

二者关系可概括为以下闭环:

  • 设计阶段:定义故障域边界、隔离策略、熔断阈值。
  • 演练阶段:注入故障(网络分区、节点宕机、资源耗尽),观察隔离是否生效。
  • 复核阶段:通过指标面板(Metrics Dashboard)验证故障域内的关键指标是否在预期范围内。
  • 改进阶段:根据演练结果调整隔离策略、扩容资源、优化调度。
演练类型 验证目标 风险控制手段
网络隔离演练 租户间网络策略是否生效 NetworkPolicy、服务网格 mTLS
资源争抢演练 CPU/内存配额是否硬限制 ResourceQuota、LimitRange、HPA
节点故障演练 Pod 是否被正确驱逐到其他故障域 PodDisruptionBudget、拓扑分布约束
存储故障演练 数据卷是否跨可用区冗余 PV 反亲和、快照与备份策略
常见误区:很多团队只做"功能演练"(验证业务是否正常),不做"故障域隔离演练"。结果线上真实故障发生时,隔离策略形同虚设——熔断未触发、限流未生效、Pod 调度到了同一故障域。指标面板复核是发现这些"假隔离"的关键环节。
演练与风险控制闭环 设计隔离策略 定义故障域边界 注入故障演练 模拟真实故障 指标面板复核 验证隔离效果 风险控制改进 调整策略/资源 闭环核心:每次演练必须经过指标面板复核,确认故障域隔离有效,否则风险控制改进无法闭环

1.4 本课程定位

本课程聚焦于多租户故障域隔离演练的指标面板复核与风险控制,面向 SRE、平台工程师、架构师。你将学到:

  • 如何设计面向多租户的故障域隔离指标面板(覆盖计算、网络、存储、限流、熔断等维度)。
  • 如何通过演练数据复核隔离策略是否真正生效,识别"假隔离"与"盲区"。
  • 如何基于复核结果制定风险控制措施,形成可度量的隔离能力成熟度模型。
前置要求:建议具备 Kubernetes 基础操作经验,了解 Pod、Namespace、NetworkPolicy、ResourceQuota 等核心概念。无需精通混沌工程,但需要理解故障注入的基本原理。