Flex Cluster通过节点角色分离(hub/leaf)降低扩展门槛,仅hub承担存储与集群管理职责,leaf无需ASM、投票或重启服务;Flex ASM实现数据库实例跨节点访问ASM,支持leaf运行只读实例;资源由集中策略引擎动态调度,但hub数量上限64且为I/O瓶颈。
Flex Cluster 的节点角色分离直接降低扩展门槛
传统 rac 要求所有节点都必须能直连共享存储、运行 asm 实例、参与 ocr/表决磁盘访问——这导致每新增一个节点,都要同步配置 san 多路径、asm 磁盘发现顺序、私网带宽和集群心跳。flex cluster 把节点拆成 hub 和 leaf 两类,只有 hub 节点承担这些重型职责,leaf 节点只需能连通至少一个 hub 即可加入集群。
这意味着:
-
leaf节点无需挂载 ASM 磁盘,也不需要配置 udev 规则或 multipath.conf -
leaf节点不参与集群投票(vote),故障时不会触发 reconfiguration,对集群稳定性冲击小 - 新增
leaf节点只需在hub上执行crsctl add node,无需重启任何已有服务
Flex ASM 让数据库实例启动不再依赖本地 ASM
在标准 RAC 中,如果某个节点的 ASM 实例宕了,该节点上的数据库实例就起不来——哪怕其他节点的 ASM 完好且数据在线。Flex ASM 改变了这个强耦合关系:只要集群中还有存活的 ASM 实例(默认至少 3 个,可通过 srvctl modify asm -count 调整),任意节点的数据库实例都能通过集群内部代理连接到可用的 ASM,完成磁盘组挂载和文件 I/O。
这个机制带来的实际效果是:
- 数据库实例可以在
leaf节点上运行,而该节点根本没跑ASM进程 - 单个
hub故障时,数据库服务不受影响,只要剩余hub数量 ≥ ASM 基数(asm count) -
leaf节点可以按需动态增减,不需要为每个节点预留 ASM 内存和 CPU 开销
资源部署策略由集中式策略引擎驱动
Flex Cluster 的核心不是“多加节点”,而是“按需分配角色”。所有节点统一归属一个 Oracle Grid Infrastructure 集群,但资源(比如数据库服务、监听器、ASM 实例)的部署位置由集中策略决定,而不是硬编码在每个节点上。
例如,你可以用 srvctl modify service 设置某服务只运行在 hub 节点,另一服务允许在 leaf 上承载只读流量——这种细粒度控制在传统 RAC 里只能靠手动启停或修改 tnsnames.ora 实现,且无法自动响应负载变化。
关键点在于:
- 策略变更后,
crsd会自动迁移服务,无需人工干预 -
leaf节点可以承载应用层中间件或只读报表服务,与数据库层解耦 - 运维人员不用再为“哪个节点该跑什么”做静态规划,策略本身就是可版本化、可审计的配置项
容易被忽略的约束:hub 节点仍是扩展瓶颈
Flex Cluster 的扩展性提升是有边界的:hub 节点最大只能到 64 个,且所有 leaf 节点的 I/O 请求最终都要经由 hub 转发。当 leaf 数量过多或只读负载激增时,hub 的 CPU、私网带宽和 ASM IO 能力会成为瓶颈。
实践中要注意:
- 不要把所有
leaf绑定到同一个hub,应使用srvctl relocate hub均衡分布 -
leaf节点上的数据库实例类型必须是READ ONLY,否则启动会失败 -
hub节点升级必须先于leaf,否则leaf可能因协议不兼容被踢出集群


















