2. OCI区域与可用性域架构设计
在OCI中规划高可用架构,第一步不是选计算规格,而是先把“地理—逻辑—权限”三层模型对齐:区域(Region)决定数据驻留与网络时延边界,可用性域(Availability Domain,AD)决定同一区域内物理隔离的故障边界,故障域(Fault Domain,FD)决定AD内部机架级与电源级的分散粒度;而租户(Tenancy)与区间(Compartment)则决定资源归属、配额与访问控制边界。四者叠加,才构成可落地的高可用拓扑。
一、区域:地理边界与数据驻留
区域是OCI中最高层级的地理隔离单元,每个区域由至少一个、通常三个可用性域组成,区域之间通过低时延骨干网互联,但彼此独立供电、独立制冷、独立网络出口。选择区域时需同时考虑三类约束:
- 数据驻留与合规:若业务要求数据不出境,则主区域必须落在对应国家或地区;跨区域复制只能作为容灾手段,不能替代本地合规。
- 用户与依赖时延:面向终端用户的Web层应靠近用户群体;面向数据库的中间件应靠近数据库所在区域,避免跨区域同步调用。
- 服务可用性差异:并非所有区域都提供全部服务,例如某些GPU规格、专属区域(Dedicated Region)或特定AI服务只在部分区域开放,规划前需核对区域服务矩阵。
区域之间不是“主备”关系,而是“独立故障域+可选复制”关系。常见做法是:主区域承载读写流量,备区域通过对象存储跨区域复制、数据库Data Guard或GoldenGate保持数据同步,DNS或流量管理按健康检查切换。
二、可用性域与故障域:从机房到机架
可用性域是区域内相互隔离的数据中心组,拥有独立的电力、冷却和网络。同一区域内AD之间通过低时延、高带宽网络互联,因此可以承载同步复制和分布式集群。故障域是AD内部的进一步隔离单元,通常对应不同的机架、电源和交换机,用于避免单机架故障导致实例批量不可用。
规划时遵循两条硬性原则:
- 跨AD部署无状态层:Web、应用、API网关等无状态组件应均匀分布在至少两个AD中,前端通过负载均衡器分发,后端通过健康检查摘除故障AD节点。
- 跨FD部署有状态层:数据库、缓存、消息队列等有状态组件,若无法跨AD同步,则至少在同一AD内跨FD分布,并配合Data Guard、RAC或集群软件实现故障切换。
三、租户与区间:权限与配额边界
租户是OCI账户的顶层容器,所有资源、用户、策略、配额都归属于某个租户。区间是租户内的逻辑隔离单元,用于分组资源、隔离网络、限定策略作用域。区间可以嵌套,但建议按“环境+业务域”划分,例如:
Tenancy
├── Compartment: prod-network
├── Compartment: prod-app
├── Compartment: prod-db
├── Compartment: nonprod-network
├── Compartment: nonprod-app
└── Compartment: shared-services
区间本身不提供网络隔离,网络隔离由VCN和子网完成;区间提供的是权限边界和配额边界。例如,可以给prod-db区间单独设置“禁止删除数据库”的策略,也可以为每个区间设置计算、存储配额,防止非生产环境挤占生产资源。
四、高可用拓扑规划方法
高可用拓扑不是“多开几台机器”,而是按故障域逐层设计冗余。推荐按以下顺序推进:
- 确定RTO/RPO:RTO决定切换速度,RPO决定数据丢失容忍度。RPO=0通常要求同步复制,跨AD可行;跨区域同步复制受时延限制,往往只能异步。
- 划分故障边界:把系统拆成无状态层、有状态层、共享服务层。无状态层跨AD,有状态层跨FD或跨AD,共享服务层按依赖关系决定是否跨区域。
- 设计流量路径:公网入口使用区域级负载均衡器,后端跨AD分发;内部服务使用VCN内私有负载均衡器,避免跨区域绕行。
- 验证切换:通过停止一个AD中的实例、模拟FD断电、断开跨区域复制链路,观察负载均衡器健康检查、数据库切换和DNS解析是否按预期收敛。
下面这张图给出一个典型的三层高可用拓扑:区域A内两个AD承载Web/App层,数据库跨FD部署并异步复制到区域B;租户与区间作为权限边界包裹全部资源。
五、规划检查清单
在提交架构设计前,建议逐项核对以下内容,避免“看起来高可用、实际单点”的常见问题:
| 检查项 | 判断标准 | 常见错误 |
|---|---|---|
| 无状态层是否跨AD | 至少两个AD中各有实例,负载均衡器健康检查覆盖全部AD | 所有Web实例放在同一AD,AD故障即全站不可用 |
| 有状态层是否跨FD | 数据库主备分布在不同FD,且复制模式与RPO匹配 | 主备在同一FD,机架断电同时失效 |
| 区间是否按环境隔离 | prod与nonprod使用不同区间,策略和配额独立 | 所有资源放在根区间,权限过大、配额争抢 |
| 跨区域复制是否验证 | 定期演练断开复制链路,确认RPO和切换时间 | 只配置复制,从未验证恢复流程 |
| AD名称是否动态获取 | 通过API查询AD列表,按逻辑名称分配 | 硬编码AD-1,跨租户部署时映射错位 |
总结来说,OCI的区域、可用性域、故障域、租户与区间共同构成一个从地理到机架、从权限到配额的完整边界体系。高可用规划的核心动作是:先定RTO/RPO,再按故障边界分层冗余,最后用真实切换演练验证。只有把“边界”画清楚,冗余才有意义。