Oracle RAC 三种心跳机制

ops/2025/3/15 4:44:50/

在Oracle RAC(Real Application Clusters)中,心跳(Heartbeat) 是集群节点间用于检测存活状态的核心机制,确保节点间的通信正常并避免脑裂(Split Brain)问题。以下是RAC的三种关键心跳机制及其作用:


1. 网络心跳(Network Heartbeat)

  • 作用:通过 私有网络互联(Private Interconnect) 实时检测节点间的通信状态。
  • 工作原理
    • 每个节点周期性地(默认每秒)向其他节点发送心跳信号。
    • 若某个节点在指定时间(默认 misscount 参数为30秒)未收到其他节点的心跳,则认为该节点故障。
    • 关键组件:依赖冗余的私有网络(如双网卡绑定)确保高可靠性。
  • 故障处理
    • 若私有网络完全中断,集群可能触发节点驱逐(Node Eviction)或重启,防止脑裂。

2. 磁盘心跳(Disk Heartbeat)

  • 作用:通过 Voting Disk 检测节点是否存活。
  • 工作原理
    • 每个节点定期向Voting Disk写入心跳信息(默认每1秒一次)。
    • 若某个节点无法在 disktimeout 时间(默认200秒)内访问Voting Disk,集群认为该节点故障。
    • Voting Disk需存储在共享存储(如ASM、共享LUN)中,且推荐奇数个(至少3个)以容忍多数故障。
  • 故障处理
    • 若多数Voting Disk不可用,集群可能无法达成共识,导致节点驱逐或集群宕机。

3. 本地心跳(Local Heartbeat)

  • 作用:节点内部自检机制,确保本地进程健康。
  • 工作原理
    • 集群守护进程(如CSSD,Cluster Synchronization Services Daemon)监控本地节点的关键资源(如网络、存储)。
    • 若本地关键资源异常(如私有网络中断或存储访问失败),节点会主动终止自身以避免集群分裂。
  • 故障处理
    • 节点自终止(Self-Termination)后,剩余节点重新组成集群。

心跳机制的综合作用

  1. 避免脑裂

    • 当网络分区(Network Partition)发生时,心跳机制确保只有多数节点存活的分区能继续运行。
    • 若节点无法通过 网络心跳磁盘心跳 达成多数一致,异常节点会被驱逐。
  2. 故障检测与恢复

    • 快速检测节点故障,触发服务迁移(如TAF)或资源重新分配。
  3. 参数配置

    • misscount:网络心跳的最大容忍丢失时间(默认30秒)。
    • disktimeout:磁盘心跳的最大容忍超时时间(默认200秒)。
    • 可通过crsctl命令调整(需谨慎操作)。

常见问题

Q1: 如果私有网络中断,但Voting Disk正常,会发生什么?
  • RAC依赖网络心跳和磁盘心跳共同工作。若私有网络中断:
    • 若仅单节点失联,其他节点通过Voting Disk判定其故障并驱逐。
    • 若网络分区导致多个节点失联,只有拥有多数Voting Disk的分区可以存活。
Q2: Voting Disk为什么需要奇数个?
  • 奇数个Voting Disk(如3或5)确保集群在分区时能形成“多数派”(如3个中的2个),避免平局导致的集群分裂。
Q3: 如何监控RAC心跳状态?
  • 使用命令:
    crsctl check cluster       -- 检查集群状态
    crsctl query css votedisk  -- 查看Voting Disk状态
    oifcfg getif              -- 查看网络接口配置
    

总结

  • 网络心跳(私有网络)、磁盘心跳(Voting Disk)、本地心跳(自检)共同保障RAC的高可用性。
  • 心跳机制是RAC防脑裂和故障恢复的核心,需结合冗余网络、共享存储和合理参数配置。
  • 理解心跳机制对诊断集群故障(如节点驱逐、网络分区)至关重要。

http://www.ppmy.cn/ops/165849.html

相关文章

四、Jmeter工具接口脚本编写

目录 1 Jmeter工具的不同控件的功能概述 1.1 线程组 1.2 取样器 1.3 配置元件 1.4 监听器 1.5 定时器 1.6 逻辑控制器 1.7 前置处理器 1.8 后置处理器 1.9 断言 2 Jmeter写单接口测试脚本 2.1 添加线程组 - 普通线程组 2.2 添加取样器 2.3 添加消息头管理器 2…

【零基础入门unity游戏开发——进阶篇】unity中配合VideoClip和VideoPlayer组件实现视频播放

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的…

[Linux] Not enough free space to extract *.zip or file

原因分析: 导致该错误的主要原因是,虽然你的主分区确实有足够的可用空间,但很多图形解压工具在解压时会默认先把文件写到一个较小的临时文件系统(tmpfs),比如这里只显示 1.6 GB。ZIP 文件在解压过程中会产…

git 撤销某次提交的上交到远程服务器的commit提交,此提交后面的commit需要保留【deeepseek生成】

核心思路 使用 git rebase -i 重写提交历史,删除目标提交后强制推送到远程(需谨慎操作)。 操作步骤 1. 确认要删除的提交位置 # 查看提交历史(找到要删除的提交哈希,例如 a1b2c3d) git log --oneline查看提…

大白话react第十九章React 与 WebGL 项目的深度拓展和优化

大白话react第十九章React 与 WebGL 项目的深度拓展和优化 1. 实现 VR/AR 交互体验 在 3D 网页应用里加入虚拟现实(VR)或者增强现实(AR)功能,能让用户有更沉浸的体验。就好比用户戴上 VR 眼镜,就能感觉自…

【我的 PWN 学习手札】House of Pig

House Of Pig House of Pig是利用tcache stash unlink与largebin attack攻击IO_FILE共同实现的一种手法,一般来说利用得到的任意地址写能力往hook上写数据,从而完成对程序流的劫持。 一、关键源码分析:_IO_str_overflow const struct _IO_…

前端学习笔记(三)——ant-design vue表单传递数据到父页面

前言 善用AI&#xff0c;快速解决定位 原理 a-form所在的SFC&#xff08;单文件&#xff09;vue中需要将表单数据传递给父页面SFC文件中&#xff0c;使用emit方法 代码 子组件&#xff08;Form.vue&#xff09; <template><a-form submit"handleSubmit&qu…

Redis 设置密码(配置文件、docker容器、命令行3种场景)

现在没有配置密码的 Redis&#xff0c;一般来说&#xff0c;已经被很多安全检测系统视为漏洞和问题了&#xff0c;官方的 Redis 默认是关闭密码的&#xff0c;如果需要设置密码&#xff0c;目前应用场景来说可以分为三种&#xff0c;如下&#xff1a; 1、基于配置文件的 通过…