案例:troubleshooting Cluster Time Synchronization Service

该案例来自北区某客户,6节点rac,数据库版本为11.2.0.4,客户的rac环境并没有配置NTP server,而是使用RAC自带的时间同步组件CTSS来做的集群节点间的时钟同步。

据客户与一线同事描述,现象为节点1和节点2时钟同步正常,但是3-6节点无法时钟同步。这个问题已经困扰了客户很长一段时间了。CTSS的时钟同步,会选择一个参考节点,其他节点的时钟都会依据参考节点的时间进行微调。

先来看看异常的节点3的gi alert日志:

从gi alert可以看到此时rac的ctss参考节点为节点1。

3节点ctss日志:

从ctss日志可以看出,ctss服务是依赖gipc进行通信的,并且可以看到大量的send报错,remote地址为节点1。同时也有一些drop、disconnect关键字。初步怀疑是防火墙问题。

检查防火墙配置规则,可以看到私网ip以及haip都是放开的。排除防护墙问题。

3节点gipc日志:

gipc异常,尝试kill 3节点gipc进程没有作用。并且通过watch+netstat -s观察网络统计的异常指标,并未发现有增长。

继续分析1节点ctss日志,只截取关键信息:

只成功接收到2节点的信息。

但是3-6节点就很不幸了,全部disconect了。这时判断是节点1的gipc出现了问题。kill 1节点gipc之后,CTSS参考节点变成了2节点,此时所有节点时钟同步恢复正常

但是这里有一个疑问,就是为何唯独2节点是同步正常的呢?据后来询问客户,之前是2节点的rac,只有节点1和节点2,后续通过加节点的方式扩展到了6节点的rac,但是3-6节点时钟同步一直不正常。

猜测是,使用CTSS方式同步时钟,如果新增节点,新增的节点的CTSS组件通过gipc与CTSS参考节点通信时会出现异常,导致时钟同步无法正常工作。

 

 

 

此条目发表在Oracle, Oracle troubleshooting分类目录,贴了, 标签。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注