4. Oracle Cloud网络高可用设计

在Oracle Cloud Infrastructure(OCI)上建设高可用数据库系统,计算与存储的高可用只是基础,真正决定业务连续性的往往是网络层。数据库节点可以借助RAC或Data Guard实现冗余,但如果VCN规划混乱、安全策略互相冲突、负载均衡器只部署在单一可用域,一次网络侧的故障或误配置就足以让整套高可用架构失效。本节围绕VCN与子网规划、安全列表与NSG、负载均衡器、DNS与流量管理、跨可用域网络冗余五个方面,说明如何把网络层设计成真正具备容灾能力的基础设施。

VCN与子网规划:先定地址,再谈冗余

VCN是OCI中的软件定义网络边界,规划的第一步是确定CIDR。建议为生产数据库环境分配一个足够大的私有地址空间,例如10.10.0.0/16,并按可用域和功能划分区域子网(Regional Subnet)。区域子网横跨整个区域内的所有可用域,比可用域专用子网更适合高可用场景,因为它允许同一子网内的资源分布在不同AD中。

一个可参考的划分方式是:数据库私有子网10.10.10.0/24用于RAC节点与Data Guard备库;客户端/应用子网10.10.20.0/24用于应用服务器;管理子网10.10.30.0/24用于堡垒机和运维跳板;负载均衡子网10.10.40.0/24用于公有或私有负载均衡器。每个子网都应明确其路由表和安全策略,避免后期出现“地址够用但策略混乱”的局面。

路由设计上,数据库私有子网通常只需要本地VCN路由和通过DRG或NAT网关的出站路径。若使用Data Guard跨区域容灾,则需要配置远程VCN对等连接或DRG,并确保主备区域之间的路由可达。需要特别注意的是,OCI的VCN CIDR一旦创建后不能随意修改,因此规划阶段必须为未来扩展预留空间。

安全列表与NSG:从子网级到实例级的双层防护

OCI提供两种安全控制机制:安全列表(Security List)作用于子网级别,NSG(Network Security Group)作用于VNIC级别。两者都是白名单模型,只有明确允许的流量才能通过。高可用数据库环境中,建议采用“安全列表做粗粒度基线、NSG做细粒度控制”的组合方式。

例如,数据库子网的安全列表可以只允许来自应用子网10.10.20.0/24的1521端口访问,以及来自管理子网的SSH访问。而NSG则可以进一步区分RAC节点、Data Guard备库和监听器,把不同角色的实例放入不同NSG。这样即使某个NSG规则被误改,也不会立即影响整个子网。

在Data Guard场景中,主库与备库之间需要开放1521端口以及redo传输相关端口。若使用RAC,还需要开放节点间的私有网络通信,包括心跳和缓存融合流量。建议把这些规则集中记录在配置表中,便于审计和故障排查。

OCI 高可用数据库网络架构示意 Region(区域) VCN 10.10.0.0/16 可用域 AD-1 数据库私有子网 10.10.10.0/24 RAC 节点 1 NSG: db-rac-nsg RAC 节点 2 NSG: db-rac-nsg 负载均衡子网 10.10.40.0/24 公有负载均衡器(主) 可用域 AD-2 数据库私有子网 10.10.10.0/24 Data Guard 备库 NSG: db-dg-nsg 只读副本 NSG: db-ro-nsg 负载均衡子网 10.10.40.0/24 公有负载均衡器(备) Redo 传输 OCI DNS / 流量管理 故障转移 · 加权轮询 · 健康检查

负载均衡器:把流量入口做成冗余点

OCI负载均衡器分为公有和私有两种形态,支持灵活形状(Flexible Shape),可按带宽和连接数动态调整。高可用设计的关键在于:负载均衡器本身要跨可用域部署,后端集(Backend Set)要包含至少两个可用域中的数据库节点或应用节点。

以公有负载均衡器为例,创建时应选择“区域级”而非“可用域级”,这样OCI会自动在所选区域内的多个AD中分配负载均衡实例。后端集配置中,把RAC的SCAN监听地址或应用服务器地址加入,并设置健康检查策略。健康检查建议使用TCP 1521或HTTP端点,间隔10秒、超时3秒、不健康阈值2次,这样单节点故障能在约20秒内被摘除。

对于数据库场景,负载均衡器通常不直接暴露数据库端口到公网,而是放在私有子网中,供应用层通过私有IP访问。若需要对外提供只读查询服务,可以在公有子网部署负载均衡器,后端指向只读副本,并配合WAF和NSG限制来源。

DNS与流量管理:让故障切换对应用透明

仅靠负载均衡器还不够,因为应用连接串中如果写死了IP地址,故障切换时仍需人工修改。OCI DNS和Traffic Management策略可以解决这个问题。常见做法是为数据库服务创建一个CNAME记录,指向负载均衡器的DNS名称,应用使用该CNAME连接。

Traffic Management支持多种策略:故障转移(Failover)适合主备架构,健康检查发现主端点异常时自动切换到备用端点;加权轮询(Weighted Round Robin)适合多活读场景,可按权重分配流量;地理定位(Geolocation)适合跨区域部署,把用户导向最近区域。对于Data Guard主备切换,建议使用故障转移策略,并把主库和备库的只读端点分别作为主备端点,设置合理的TTL(如60秒),以平衡切换速度和DNS缓存影响。

跨可用域网络冗余:把单点彻底消除

跨可用域冗余的核心是“任何一层都不依赖单一AD”。数据库层通过RAC或Data Guard实现跨AD部署;负载均衡层通过区域级负载均衡器实现跨AD;子网层使用区域子网,使同一子网内的资源可以分布在不同AD;路由层通过DRG或本地对等连接保证AD间通信不经过单点设备。

需要特别关注的是延迟。同一区域内不同AD之间的网络延迟通常在1毫秒以内,对RAC心跳和Data Guard同步影响很小,但仍建议在部署后通过ping或traceroute验证AD间路径。若使用最大可用性保护模式(Maximum Availability),需要确认网络抖动不会导致频繁的redo传输超时。

在规划阶段,建议把每个子网的CIDR、用途、关联路由表、安全列表和NSG整理成一张网络规划表,并在变更前评估对跨AD通信的影响。网络层的任何修改都可能影响Data Guard同步或RAC心跳,因此变更窗口和回滚方案必须提前准备。

综合来看,Oracle Cloud网络高可用设计不是单一组件的堆叠,而是从地址规划、安全策略、流量入口到DNS解析的端到端冗余。只有每一层都消除单点,数据库的高可用能力才能真正落地。