2. Azure 区域与可用性区域基础

在讨论多区域高可用与灾备之前,必须先厘清 Azure 中四个容易混淆但层级完全不同的概念:地理区域(Geography)、区域(Region)、可用性区域(Availability Zone)和区域对(Region Pair)。它们不是同义词,而是从大到小、从物理到逻辑的四层结构。选错层级,后续的 SLA 目标、复制策略和故障切换设计都会失去依据。

四层结构:从地理区域到可用性区域

地理区域是最高层级,通常对应一个政治或数据主权边界,例如“中国”“欧洲”“美国”。它的核心作用是界定数据驻留与合规范围:数据默认不会跨地理区域流动,除非你显式配置。一个地理区域内包含多个区域,区域是部署资源的基本单位,每个区域由一组独立的数据中心组成,拥有独立的电力、冷却和网络接入。例如“中国北部”“东亚”“西欧”都是区域。

区域之下是可用性区域。可用性区域是区域内物理隔离的数据中心组,每个区域通常有 3 个可用性区域(部分区域为 2 个或更多)。它们之间通过低延迟网络互联,但电力、冷却和网络入口相互独立。这意味着单个可用性区域故障(如断电、水浸、网络中断)不会影响同区域内的其他可用性区域。可用性区域是抵御数据中心级故障的最小单元。

最后是区域对。区域对是同一地理区域内两个区域之间的固定配对关系,例如“东亚—东南亚”“中国北部—中国东部”。区域对的价值在于:Azure 会优先在配对区域内进行平台更新和故障恢复,且部分服务(如异地冗余存储 GRS)默认将数据复制到配对区域。区域对不是可用性区域的替代,而是跨区域灾备的默认拓扑。

地理区域(Geography)— 数据主权与合规边界 区域 A(如:中国北部) 可用性区域 1 独立电力 · 独立冷却 · 独立网络 故障域 1 · 更新域 1 可用性区域 2 独立电力 · 独立冷却 · 独立网络 故障域 2 · 更新域 2 可用性区域 3 独立电力 · 独立冷却 · 独立网络 故障域 3 · 更新域 3 区域 B(如:中国东部) 可用性区域 1 独立电力 · 独立冷却 · 独立网络 故障域 1 · 更新域 1 可用性区域 2 独立电力 · 独立冷却 · 独立网络 故障域 2 · 更新域 2 可用性区域 3 独立电力 · 独立冷却 · 独立网络 故障域 3 · 更新域 3 区域对(Region Pair)

故障域与更新域:两种不同的隔离维度

理解可用性区域之后,还需要区分两个常被混用的概念:故障域(Fault Domain)和更新域(Update Domain)。它们描述的是同一物理资源上两种不同的隔离维度。

故障域解决的是“一起坏”的问题。同一故障域内的硬件共享相同的电源、网络交换机或机架,因此一个故障域内的故障可能同时影响其中所有资源。可用性区域本身就是最高层级的故障域划分:AZ1 和 AZ2 不会因为同一台交换机故障而同时离线。在单个可用性区域内部,Azure 还会进一步划分更细的故障域,用于虚拟机规模集等场景。

更新域解决的是“一起重启”的问题。Azure 平台在进行主机操作系统补丁、固件升级等维护操作时,会按更新域分批执行,同一时刻只重启一个更新域中的资源,从而保证服务不中断。默认情况下,一个可用性区域内通常有 5 个更新域(具体数量由平台决定,不应硬编码)。故障域是空间维度的隔离,更新域是时间维度的隔离,两者共同构成可用性区域内部的韧性基础。

关键区别:故障域回答“哪些资源可能同时故障”,更新域回答“哪些资源可能同时被维护重启”。设计高可用时,两者都要考虑:把实例分散到不同故障域以抵御硬件故障,同时依赖更新域分批机制避免维护期间全部离线。

如何为多区域架构选择合适区域

选择区域不是简单地“选两个离用户近的”,而需要同时权衡以下因素:

  • 合规与数据驻留:确认业务数据是否允许离开当前地理区域。如果要求数据不出境,区域对必须选在同一地理区域内。
  • 服务可用性:并非所有 Azure 服务都在所有区域提供。例如某些 GPU 机型、特定数据库层级或可用性区域支持可能只在部分区域可用。部署前应查阅目标区域的服务可用性列表。
  • 延迟与用户分布:主区域应靠近主要用户群,配对区域用于灾备。跨区域复制延迟通常在几十毫秒到几百毫秒之间,具体取决于区域间距离和链路质量。
  • 区域对关系:优先选择 Azure 定义的区域对,因为平台会优先保障配对区域间的恢复顺序,且 GRS 等服务的默认复制目标就是配对区域。
  • 容量与配额:目标区域是否有足够的 vCPU 配额、公共 IP 配额和存储账户限制,需要在架构设计阶段确认。

以一个面向中国东部用户的 Web 应用为例:主区域选择“中国东部”,灾备区域选择其区域对“中国北部”。应用层部署在两个区域的各三个可用性区域中,数据层使用 GRS 存储账户自动复制到配对区域。这样,单个可用性区域故障时,同区域其他 AZ 继续服务;整个区域故障时,切换到配对区域。这个选择同时满足了合规(数据不出地理区域)、延迟(主区域靠近用户)和灾备(区域对自动复制)三个要求。

常见误区:把“可用性区域”当成“区域”来用。可用性区域只能抵御数据中心级故障,无法抵御区域级故障(如大规模自然灾害或区域级网络中断)。真正的区域级灾备必须跨区域部署,并配合流量管理器或 Front Door 进行故障切换。

选择区域的检查清单

检查项 判断依据 示例
数据驻留要求 数据是否允许跨地理区域 要求数据不出境 → 区域对必须同属一个地理区域
服务可用性 目标服务是否在候选区域提供 需要可用性区域支持的 AKS → 确认区域支持 AZ
延迟目标 主区域到主要用户的 RTT 目标 < 50ms → 选择地理上最近的区域
区域对关系 是否为 Azure 定义的配对区域 中国东部 ↔ 中国北部;东亚 ↔ 东南亚
配额与容量 vCPU、IP、存储账户配额是否充足 灾备区域需预留与主区域相当的配额