RAC heartbeat 心跳机制
RAC⼼跳机制 – 集群⼼跳
基本机制:
1、确定节点和节点间的连通性,达到彼此了解
2、⽤共享的位置保持节点的连通信息,及时记录和更新
3、本地节点的⾃我监控 (保证自己是可以对外提供服务的,正常运行的。如果能够自我监控,在自己遇到问题的时候能够自己处理,这样就可以更好的把握节点的一致性)
介绍:⽹络⼼跳主要是确保集群节点间的连通性,以便节点之间能够了解彼此的状态。
原理: ocssd.bin进程每秒向其他节点发送⽹络⼼跳,通过⼼跳情况确认节点的连通性,以及当⽹络⼼跳出现问题时做出处理。
2018-07-23 22:59:07.495: [ CSSD][3535726336]clssnmSendingThread: sending status msg to all nodes
这个功能主要是由守护进程 ocssd.bin 完成的。 ocssd.bin守护进程包含以下线程:
发送线程(clssnmSending Thread): 每秒向集群中其他节点发送⽹络⼼跳信息
分析线程(clssnmPolling Thread): 分析收到的⽹络⼼跳信息并进⾏处理,如果发现某⼀些节点持续丢失⽹络⼼跳,就会通知集群进⾏重新配置。
集群重新配置线程(clssnmRcfgMgrThread): 当接收到分析线程的重新配置的通知时,该进程进⾏重新配置。
派遣线程(clssnmClusterListener): 负责接收从远程传递过来的消息,之后,根据信息的种类发给相关的线程进⾏处理。 (需要接受节点其他节点传来的各种信息,在接受信息的时候如果发现接受的信息是网络心跳的信息,那么就会派给分析线程,如果是其他信息就会派发给相应的处理进程)
脑裂就是节点1和节点2由于种种原因私有网络出现问题了,两个节点之间不能互相访问,如果各自的节点状态正常只是交互出现了问题,这个时候两个节点都会认为是这个集群当中唯一的幸存者,作为唯一的幸存者要承担管理集群的责任,那么所有的节点都会想要去修改磁盘上面的数据,通过修改数据来达到管理集群的目的,所以节点之间都想将对方踢出去达到自己管理集群。出现脑裂之后就会出现机制决定将谁踢出集群,这个时候就要通过磁盘心跳了。
原理: Oracle集群的每⼀个节点每秒都会向集群中所有的表决盘注册本地节点的磁盘⼼跳信息,也就是说,所有的VF的信息是相同的。同时会将⾃⼰能够联系的到的集群中的其他节点的信息,或者说本地节点认为集群中的成员列表信息填⼊到表决盘中。⼀旦发⽣脑裂, CSS的重新配置线程就会通过表决盘的信息了解集群节点间的连通性,从⽽决定集群会分裂成⼏个⼦集群,以及每个⼦集群所包含的节点情况和每个节点的状态。
磁盘⼼跳线程(clssnmvDiskPing Thread): 该线程负责向集群的表决盘中发送磁盘⼼跳,同时,该线程也负责读取表决盘中的kill block的信息,以确定本地节点是否需要重新启动。
磁盘⼼跳监控线程(clssnmvDiskPingMonitor Thread): 监控磁盘⼼跳线程是否能够正常地发送⼼跳,是否能正确读取kill block的信息。
Kill block线程(clssnmv KillBlock Thread): 负责监控VF的 kill block信息(只负责监控,如果发现kill block信息是针对该节点的,那么就会告知磁盘心跳线程去读取kill block)
介绍:监控ocssd.bin进程以及本地节点的状态
原理: Oracle每⼀秒在向远端节点发送⽹络⼼跳的同时,同⼀进程向cssdagentd代理和cssdmonitor代理发送本地ocssd.bin进程的状态。
相关进程:
实现过程
发送线程: 每秒向集群中其他节点发送⽹络⼼跳信息的同时,同⼀进程(clssnmsending Thread)发送本地ocssd.bin进程的状态)
------------>cssdagent
------------>cssdmonitor
10g+11.1
11.2+
2.集群的重新配置管理节点(Reconfiguration Master)向集群中所有节点发送重新配置消息,所有收到此消息的节点会回复该消息,并通知RM节点⾃⼰的状态。
3.接下来, RM节点基于每个节点的状态进⾏投票并检查是否有脑裂发⽣
4.对于检查脑裂, RM会查看⽹络⼼跳⽆法访问的节点的磁盘⼼跳信息,以便确认这些节点的状态,如果这些状态本⾝是正常的,需要避免。
5. RM节点向表决盘中写⼊“有毒的(poison package) ”的信息,需要重启的节点在访问到表决盘的时候读取到该信息,完成本节点的重启,重启之后加入集群,也有可能踢出去了,不加入集群了。
6. RM节点修改集群节点列表,重新配置完成。 (集群被踢出去或者加入都是要重新分配资源的)
概念:负责维护数据库集群的节点列表,确保只有集群的节点能够数据库,并且在节点加⼊集群或者离开集群时,更新集群列表;负责数据库节点与集群管理软件的通信,向集群软件中注册数据库的信息。
节点列表:记录集群中节点的状态 (对集群节点的管理是怎么实现的呢?是通过节点列表的位图信息来确定节点是否正常,1代表正常,0代表不正常)
---------------------
作者:风流搞技术
来源:CSDN
原文:https://blog.csdn.net/qq_34556414/article/details/81176679?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!
RAC heartbeat 心跳机制的更多相关文章
- 闲说HeartBeat心跳包和TCP协议的KeepAlive机制
很多应用层协议都有HeartBeat机制,通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据.使用心跳包的典型协议是IM,比如QQ/MSN/飞信等协议. ...
- rabbitmq 的心跳机制&应用
官方文档说: If a consumer dies (its channel is closed, connection is closed, or TCP connection is lost) w ...
- netty心跳机制测试
netty中有比较完善的心跳机制,(在基础server版本基础上[netty基础--基本收发])添加少量代码即可实现对心跳的监测和处理. 1 server端channel中加入心跳处理机制 // Id ...
- Spark RPC框架源码分析(三)Spark心跳机制分析
一.Spark心跳概述 前面两节中介绍了Spark RPC的基本知识,以及深入剖析了Spark RPC中一些源码的实现流程. 具体可以看这里: Spark RPC框架源码分析(二)运行时序 Spark ...
- Netty(一) SpringBoot 整合长连接心跳机制
前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty. 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳. 服务端也每隔 N ...
- TCP长连接与短连接、心跳机制
1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...
- Netty学习(八)-Netty的心跳机制
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/a953713428/article/details/69378412我们知道在TCP长连接或者Web ...
- 9.7 dubbo心跳机制
dubbo的心跳机制: 目的:检测provider与consumer之间的connection连接是不是还连接着,如果连接断了,需要作出相应的处理. 原理: provider:dubbo的心跳默认是在 ...
- C#之实现Scoket心跳机制
C#之实现Scoket心跳机制 标签: UnityC#TCPSocket心跳 2017-05-17 09:58 1716人阅读 评论(0) 收藏 举报 分类: Unity(134) C#(6) ...
随机推荐
- Mybaits成长之路
今天刚开始接触mybaits,接下来介绍mybaits的demo的建立 1根据数据库表定义一个实体类Employee package com.atguigu.mybatis.bean; public ...
- Xcode10报错 library not found for -lstdc++ 问题解决
在Xcode9上正常编译的项目,在Xcode10上编译可能会遇到如下错误: library not found for -lstdc++.6.0.9 library not found for -ls ...
- ES6对象的拓展
属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = {foo}; //允许直接写入变量和函数作为 ...
- oauth2.0协议原理
OAuth的授权不会使用第三方触及到用户的帐号信息(如用户密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的. OAuth的作用:就是让“客户端”安全可控 ...
- Leon-ai on WSL
这几天尝试了下Windows10的WSL,的确是良心产品,虽然还有很多待改进的地方(比如iptabeles之类的功能还未支持). 使用了WSL就避免安装双系统的繁琐,节省很多时间,而且因为是微软自家产 ...
- CircleCI 前端自动部署
概述 现在很多前端库都用到了 CircleCI 进行自动部署,比如Vue,React,作为一个前端我觉得还是有必要实操一下 CircleCI 的,总体来说还是挺简单的,我把过程和体会记录下来,供以后开 ...
- Failed building wheel for netifaces
目录 文章目录 目录 问题 解决 问题 安装 OpenStackClient 的时候发现问题: Failed building wheel for netifaces Running setup.py ...
- NFS服务和DHCP服务讲解
1.NFS服务端概述 NFS,是Network File System的简写,即网络文件系统.网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS: NFS允许一个系统在网络上与他人共享 ...
- ES 集群管理(集群规划、集群搭建、集群管理)
一.集群规划 搭建一个集群我们需要考虑如下几个问题: 1. 我们需要多大规模的集群? 2. 集群中的节点角色如何分配? 3. 如何避免脑裂问题? 4. 索引应该设置多少个分片? 5. 分片应该设置几个 ...
- bzoj3028食物 关于(1+x+x2+x3+x4+...)^k的第i项系数就是c(i+k−1,k−1)的证明
关于(1+x+x2+x3+x4+...)^k的第i项系数就是c(i+k−1,k−1)的证明对于第i项,假设为5x^5=x^0*x^5x^5=x^1*x^4x^5=x^2*x^3........也就是说 ...