浅谈RAC – CSS组件
积极的眼睛,还是败给了懒惰的双手。停更了一段时间,今天继续浅谈RAC的博文。
我们在前面的博客说集群是一组相互独立的、通过高速网络互联的节点(计算机),它们构成了一个组回,并以单一系统的模式加以管理。所以集群管理软件注定了要有网络互联的管理机制和共享磁盘的守护机制。在GI软件中,这个机制则是由组件CSSD来实现的。
集群中的每个节点都有CSSD守护进程,这些进程间会通过私网进行通信,并且定期向其它节点发送网络心跳,以此来确认不同节点间的通信状态。同时各个节点的CSSD还会定期向共享磁盘发送磁盘心跳,以保证所有成员节点都可以IO读写共同的磁盘。
1.Interconnect
我们在配置GI时需要在host文件中配置私网通信用(Interconnect)的IP地址。
[root@node1 ~]# cat /etc/hosts | grep private
192.168.3.11 node1-i private1
192.168.3.12 node2-i private2
这个私网通信地址就是CSSD进行网络心跳时所要用到的IP地址。这些IP地址的信息在安装GI时被root脚本写到了OCR中。所以我们通过oifcfg命令可以获得OCR中保存的网络配置信息。
[root@node1 ~]# oifcfg getif
enp0s8 10.10.3.0 global public
enp0s9 192.168.3.0 global cluster_interconnect,asm
2.集群心跳机制
ocssd.bin是个多线程的进程。其中clssnmSendingThread线程会每秒钟向集群中的所有节点通过TCP协议发送网络心跳信息(Network HeartBeat,简称NHB)。clssnmPollingThread线程则会接收这些网络心跳,并确认节点之间的连接状态。如果集群中的某一个或者一些节点持续的丢失网络心跳一段时间,则会发生Reconfiguration,其结果则往往是发生节点排除。
这里面需要强调的一个点是,发生节点排除时的条件必须是连续的丢失NHB。有些网络状态是时断时续的不稳定状态时,节点并不一定会被排除。那么这里面所谓的持续的丢失网络心跳一段时间则是由misscount参数决定的。
misscount是保存在OCR中的参数值。我们可以通过下面的命令获得该参数值。
[root@node1 ~]# crsctl get css misscount
CRS-4678: Successful get misscount 30 for Cluster Synchroni