同城双活还是机架高可用?深入理解 Windows HCI 的 Fault Domain 设计 这是一篇延伸材料。主旨用最通俗的方式把 RAC 和 Stretch Cluster 讲清楚并给出可以直接拿去培训的话术。核心不是网络层 L2 vs L3而是故障域 存储模型。术语声明避免歧义RAC本文统一指Rack-aware deployment机架感知部署描述Cluster / S2D 知晓 Rack / Fault Domain 拓扑这一能力不是微软的官方产品模式名称。Fault Domain 模型Windows Failover Cluster 的 Fault Domain 层级通常表现为Cluster → Site → Rack → NodeSite / Rack / Node 用于描述节点的物理位置和故障隔离关系。Fault Domain 在 Cluster API 中是层级化模型并非严格固定四层树。Stretch Cluster跨站点延伸故障转移集群Windows Server。现代实现可基于 Storage Replica传统实现也可能基于存储阵列复制。Storage ReplicaSRWindows Server / Azure Local 提供的基于日志log-based的块级复制技术。源卷写日志后通过网络流复制到目标卷日志再由目标卷应用到数据卷从而实现卷级同步或异步复制。本文 RAC 不指 Oracle Real Application Clusters。1. 一个最容易理解的比喻两栋办公楼1.1 RAC同一栋楼办公楼 A ┌─────────────────────┐ │ 3 楼Rack 1 │ │ 2 楼Rack 2 │ │ 1 楼Rack 3 │ └─────────────────────┘它要求是同一栋楼同一个配电系统同一个机房空调同一个数据中心网络域低延迟、高带宽、稳定不强制 L2 广播域员工可以随便走、随便挪工位。所以 Windows 认为这是一个地方。一个 Cluster 一套 S2D 存储池体系Storage Spaces Pool即可——由 S2D 副本机制跨 Fault Domain 分布数据。微软官方也是这样定义Rack Fault Domain的。注意RAC机架感知部署描述的是Cluster 知道哪个 Node 在哪个 Rack / Fault Domain从而把副本跨 Rack 摆放以容忍 PDU / ToR 故障这一能力而不是某个产品模式名称。1.2 Stretch Cluster两栋楼北京办公楼 │ │ MPLS / DWDM / Metro Ethernet │ 上海办公楼或者园区 A │ │ 跨园区专线 │ 园区 B两栋楼。于是 Windows 知道这是两个 Site。所以需要Storage Replica同步或异步复制故障切换流程2. RAC 的网络定位从L2 vs L3改为统一网络域2.1 RAC 的真正约束不是二层RAC 的核心限制不是二层广播域而是同一个 Windows Failover Cluster同一套 S2D 存储池体系Storage Spaces Pool节点间低延迟、高带宽、稳定的网络亚毫秒到低毫秒级节点间持续通信SMB / SMB Direct / RDMARAC 不严格要求 L2 广播域。Windows Cluster、S2D 都能跨 L3 routed network 工作。 关键不是二层而是同一个 Cluster、同一套存储资源、节点间低延迟网络。但跨 L3 不是随便两个三层网段跨 L3 routed network 仍需满足 SMB / RDMA / Cluster Network 等组件的设计要求——比如SMB Multichannel / SMB DirectRDMA需要底层网络支持Cluster Network 角色Live Migration / Cluster / Storage需要正确分配路由路径 MTU / 防火墙策略需要匹配 S2D 流量特征所以理论能通信≠适合 S2D 部署。2.2 RAC 的存储模型完整的 S2D 栈S2D 的完整数据路径Physical Disks节点本地直连 ↓ Storage Spaces Pool跨节点聚合 ↓ Virtual Disk性能 / 容量双层布局 ↓ CSVFS / CSV Volume集群共享卷 ↓ VM / 工作负载RAC 关注的是一个 Cluster 内部共享同一套 S2D 存储池体系可能包含多个 Pool / Storage Spaces / Volumes副本跨 Fault Domain 摆放容错 PDU / ToR 故障节点间通过 SMB3 / SMB DirectRDMA通信2.3 跨路由网络可行但不是主要模式RAC 不以跨站点网络为设计目标通常要求低延迟的数据中心级网络跨路由网络并非主要部署模式。跨 L3 routed network 理论上可以存在Rack A Node1 Node2 ↕ L3 Routed Network / EVPN-VXLAN Fabric Rack B Node3 Node4但代价是延迟增加复杂度增加RDMA 设计复杂跨 routed fabric 的 RDMA 需要仔细规划故障域边界变得模糊故障排查困难因此微软官方针对 S2D Rack Fault Domain 的设计主要面向单数据中心场景而不是 Metro Cluster 场景。官方措辞倾向是not designed for而不是硬性不能——这一点在做技术答辩时务必注意。3. 为什么 Stretch Cluster 可以跨 L3因为 Storage Replica 本质就是复制Site A ↓ 写日志Source Volume Log ↓ 发送Replication Stream ↓ Site BDestination Volume Log Commit它根本不要求所有磁盘组成一个 Pool。因此完全可以北京 ↓ 上海同步 / 异步都是官方支持。Stretch 最重要的是 Storage Replica 可以跨 IP 网络而不是必须同一广播域。这点非常重要Storage Replica 是 IP 网络上的复制协议对底层是 L2 还是 L3 路由不敏感。3.1 Stretch 拓扑Storage Replica 支持两种典型部署模式实现 AStretch Failover Cluster通过 Storage Replica 在同一 Windows Failover Cluster 内、跨 Site 的存储卷之间复制Cluster ├── Site A: Node1, Node2CSV / VM └── Site B: Node3, Node4CSV / VM Site A Volume ←─Storage Replica─→ Site B Volume实现 BCluster-to-Cluster Replication两个独立的 Windows Failover Cluster 之间做存储级复制Cluster A Cluster B ├── Node1, Node2 ├── Node3, Node4 └── S2D Pool └── S2D Pool ↑ ↑ └──── Storage Replica ──────┘两种实现各有取舍核心都是 Site 间数据复制。4. 一张图就明白Windows Server 2025 ═══════════════════════════════════════════════════════ ┌──────────────────────────────────────┐ │ RACRack-aware deployment │ │ 能力描述非产品模式名称 │ └──────────────────────────────────────┘ Rack A ════════════ Rack B │ │ │ 同一 Cluster │ │ 同一 S2D 池体系 │ │ 同一数据中心网络域 │ │ 亚毫秒低毫秒级延迟 │ │_______________________│ ┌──────────────────────────────────────┐ │ Stretch Cluster │ │ (Storage Replica) │ └──────────────────────────────────────┘ Site A │ │ IP 网络 / WAN / Metro │ Storage Replica 复制 │ ▼ Site B 同步 / 异步复制5. ⚠️ 不要这样写文章不要直接写Stretch 可以跨三层RAC 只能跨二层。因为这不是微软官方定义容易被网络工程师质疑——他们会指出某些环境中 L2 可以跨园区通过 EVPN / VXLAN 扩展二层某些 SD-WAN 设计让 L3 看起来像 L2Windows Cluster 和 S2D 都支持 routed network更可能引发反例的表述错误表述为什么危险正确表述旧式绝对化RAC 必须 L2 广播域L2 扩展方案EVPN-VXLAN可跨园区新表述RAC 部署在统一数据中心网络域内RAC 不能跨 L3Windows Cluster / S2D 支持 routed networkRAC 不以跨路由网络为主要部署模式旧式写法产品模式名称式微软官方没有这个产品模式名称新表述RAC Rack-aware deployment 能力描述旧式绝对化措辞带全部二字官方原文一般说not designed for新表述微软官方 RAC 设计主要面向单数据中心场景6. 更符合微软官方表述的措辞更准确的说法RAC 面向单数据中心Single Datacenter的机架级高可用 强调同一 Cluster、同一 S2D 池、跨 Rack Fault Domain 副本布局 要求统一、低延迟的数据中心网络 Stretch Cluster 面向跨站点Multi-site的灾难恢复 通过 Storage Replica 支持跨 IP 网络进行同步或异步复制。如果再压缩成一句适合培训时讲的话RAC 是一个数据中心内部横向扩展Stretch Cluster 是两个数据中心之间纵向容灾。前者追求统一资源池和高可用后者追求站点级灾难恢复。7. RAC vs Stretch Cluster 总览对比表维度RACRack-aware deploymentStretch Cluster目标机架级高可用PDU / ToR 故障站点级容灾机房 / 园区故障范围单数据中心多站点同城 / 跨城存储模型一个 Cluster 内共享同一套 S2D 存储池体系Storage Spaces Pool两端独立存储资源 Storage Replica / 阵列复制核心技术S2D 副本跨 Fault Domain 摆放Storage Replica基于日志的块级复制集群拓扑一个 Windows Failover ClusterStretch Failover Cluster 或 Cluster-to-Cluster Replication网络统一数据中心网络域亚毫秒低毫秒级IP 网络同步 ≤ 5 ms RTT异步无硬性 RTT数据一致性实时访问共享池复制一致性同步 RPO ≈ 0异步 RPO 0典型故障域单机柜 / ToR / PDU 故障机房 / 园区 / 城市级故障RPO0S2D 自身副本0同步/ 0异步RTO秒级节点故障自动恢复秒级分钟级取决于 Witness、Cluster Timeout、应用恢复流程Azure Local 支持支持机架感知是 Azure Local 23H2 推荐的副本布局方式不作为主要部署模型Azure Local 当前不以跨站点 S2D Storage Replica 为目标架构Windows Server 2025 支持支持支持比喻同一栋楼里的不同楼层一个 Pool 体系两栋楼之间寄送文件副本独立存储资源 复制8. 专业话术模板8.1 一句话开场RAC 是同一个数据中心里的机架级高可用Stretch Cluster 是跨站点的灾难恢复。微软不是把它们做成替代关系而是按故障级别分层。8.2 故障级别引导如果你的风险是单个机柜掉电PDU、ToR 故障用 RAC 如果你的风险是整个机房失火、市电中断、园区事故用 Windows Server Stretch Cluster Azure Local 当前产品架构不以传统 Windows Server Stretch Cluster跨站点 S2D Storage Replica作为主要部署模型 如果只是单台服务器故障S2D 自身的副本就够了。8.3 距离与延迟引导RAC 部署要求亚毫秒到低毫秒级节点间延迟所以它只能在一个数据中心内 Stretch Cluster 同步模式通常要求 ≤ 5 ms RTT因此主要适合同城或近距离站点跨城通常采用异步复制 跨城场景 Stretch Cluster 异步模式代价是 RPO 0。8.4 产品定位引导Windows Server 2025 保留 RAC Stretch Cluster 是因为客户群体差异——很多传统企业不上 Azure、不用 Arc、不跑 AKS他们需要传统的双活方案 Azure Local 23H2 不以传统 Stretch Cluster 作为主要部署模型是因为它要面向 Arc AKS Kubernetes 的云管理模型Stretch Cluster 覆盖不了这一层。8.5 比喻升华把 RAC 想成同一栋楼里的不同楼层一个 Cluster、一套存储池体系员工随便调动 把 Stretch Cluster 想成两栋楼之间用快递寄送文件副本独立存储资源、独立 Cluster用复制保持一致。 两栋楼之间没法让员工瞬间挪过去所以必须用快递——但快递就意味着延迟和代价。9. 故障层级与技术对应新增把故障从小到大排列可以直观看到 RAC 与 Stretch 各自的位置Node Failure单台服务器故障 ↓ Rack FailurePDU / ToR 故障 ↓ Site Failure机房 / 园区故障 ↓ Region Failure区域灾难故障层级典型诱因主要应对技术节点故障服务器硬件坏、操作系统崩溃Cluster FailoverS2D 自身副本机架故障PDU 掉电、ToR 交换机坏RACRack-aware placement跨 Rack 副本布局机房 / 园区故障市电中断、机房失火、网络中断Windows Server Stretch ClusterStorage Replica区域灾难大范围自然灾害、大规模网络故障Backup / ASR / 异地异步复制这是 Azure Local / Windows Server HCI 架构培训时最直观的一张图——学员只要把风险大小和技术手段对上号就不会把 Stretch 当万能方案。10. 关键认知RAC 的核心约束是同一 Cluster、同一 S2D 池、跨 Rack Fault Domain不是简单的二层广播域要求。RAC 不以跨路由网络为主要部署模式——可以跨 L3 routed network但需满足 SMB / RDMA / Cluster Network 等组件的设计要求。Stretch 的核心约束是跨站点 复制通过 Storage Replica 跨 IP 网络实现。不要简化成Stretch 跨三层、RAC 跨二层那是网络视角的隐喻不是微软官方定义。Rack-aware deployment 是能力描述不是产品模式名称——微软官方故障域模型是 Cluster → Site → Rack → Node 层级化体系。培训时用两栋办公楼比喻最稳物理上独立 Site物理上同栋不同层 Rack。11. 全文总结RAC 解决的是 Fault Domain 内的数据布局问题Stretch Cluster 解决的是 Fault Domain 之间的数据复制问题。这句话是整篇文章的核心收束。RAC在同一个 Cluster 内部把数据副本布局到不同 Rack / Fault Domain使节点 / 机架级故障不影响可用性。Stretch Cluster在不同的 Cluster / Site 之间做数据复制使机房 / 园区级故障不影响业务连续性。两者正交一个面向 Fault Domain 内的高可用一个面向 Fault Domain 之间的容灾。RAC 不会变出第二栋楼Stretch 也不会把两栋楼合成一栋楼。