其乐融融的IT技术小站

Oracle RAC集群时间同步告警PRVF-5436&PRVF-9652

 [[436761]]

本文转载自微信公众号「DBA闲思杂想录」,作者潇湘隐者。转载本文请联系DBA闲思杂想录公众号。

接手了一套RAC数据库(Oracle 11g),结果在巡检的时候发现集群节点间的时钟同步有下面告警信息,如下所示:

  1. $ cluvfy comp clocksync -verbose 
  2.  
  3. Verifying Clock Synchronization across the cluster nodes 
  4.  
  5. Checking if Clusterware is installed on all nodes... 
  6. Check of Clusterware install passed 
  7.  
  8. Checking if CTSS Resource is running on all nodes... 
  9. Check: CTSS Resource running on all nodes 
  10.   Node Name                             Status 
  11.   ------------------------------------  ------------------------ 
  12.   oracle1                            passed 
  13. Result: CTSS resource check passed 
  14.  
  15.   
  16. Querying CTSS for time offset on all nodes... 
  17. Result: Query of CTSS for time offset passed 
  18.  
  19.   
  20. Check CTSS state started... 
  21. Check: CTSS state 
  22.   Node Name                             State 
  23.   ------------------------------------  ------------------------ 
  24.   oracle1                            Observer 
  25.  
  26. CTSS is in Observer state. Switching over to clock synchronization checks using NTP 
  27.  
  28. Starting Clock synchronization checks using Network Time Protocol(NTP)... 
  29.  
  30. NTP Configuration file check started... 
  31.  
  32. The NTP configuration file "/etc/ntp.conf" is available on all nodes 
  33.  
  34. NTP Configuration file check passed 
  35.  
  36.   
  37. Checking daemon liveness... 
  38. Check: Liveness for "ntpd" 
  39.  
  40.   Node Name                             Running? 
  41.   ------------------------------------  ------------------------ 
  42.   oracle1                               yes 
  43.  
  44. Result: Liveness check passed for "ntpd" 
  45. Check for NTP daemon or service alive passed on all nodes 
  46.  
  47. Checking NTP daemon command line for slewing option "-x" 
  48. Check: NTP daemon command line 
  49.  
  50.   Node Name                             Slewing Option Set
  51.   ------------------------------------  ------------------------ 
  52.   oracle1                                  no 
  53.  
  54. Result: 
  55. NTP daemon slewing option check failed on some nodes 
  56. PRVF-5436 : The NTP daemon running on one or more nodes lacks the slewing option "-x" 
  57. Result: Clock synchronization check using Network Time Protocol(NTP) failed 
  58.  
  59.   
  60. PRVF-9652 : Cluster Time Synchronization Services check failed 
  61.  
  62.  
  63. Verification of Clock Synchronization across the cluster nodes was unsuccessful on all the specified nodes. 

出现上面错误提示,是因为RAC集群服务器的NTP服务没有启用-x选项,如果没有开启slewing 选项,在时间差异超过特定(取决于平台)阈值时,NTP 将向前或向后调整系统时钟。大幅度向后调整时间会导致 Clusterware 以为错过了签到,从而发生节点驱逐的情况。出于此原因,强烈建议将 NTP 配置调整为slewing time (加快或减慢)时钟时间以同步时间,以防止此类驱逐情况的发生。

What is slewing?

The NTP daemon will periodically update the system clock with the time from a reference clock. If the time on the reference clock is behind the time on the system clock, the system clock will be set backwards in one large decrement. Such swift changes in time can lead to Oracle shutting down the node due to inconsistent timers. To avoid this problem, NTP can be configured to slew the clock. When slewing the clock the time on system is incremented slower until the system clock is in sync with the time on the reference system.

“-x”选项用于阻止ntp向后调整时钟,向后则意味着时间回逆,可能导致数据库、集群出现重启.驱逐等问题。

之前维护这套RAC的人可能在安装的时候就从未留意过这个问题,那么问题来了,如果是安装、调试阶段,直接修改配置,重启NTP服务就完事了,但是现在这套RAC正在对外提供关键服务,那么可以重启NTP服务吗?会不会引发什么问题呢?

答案是不会,如果两个(或多个)节点之间没有时间差,完全可以重启NTP服务,不影响RAC的集群服务。你可以一个节点一个节点处理。当然这个也是经过验证确认过的。

下面是关于CTSS与NTP的关系的相关知识点:

从Oracle 11gR2 RAC开始使用Cluster Time Synchronization Service(CTSS)同步各节点的时间,当安装程序发现NTP协议处于非活动状态时,安装集群时间同步服务将以活动模式(active)自动进行安装并同步所有节点的时间。如果发现配置了NTP,则以观察者模式(observer mode)启动集群时间同步服务,Oracle Clusterware不会在集群中进行活动的时间同步。

在RAC中,集群的时间应该是保持同步的,否则可能导致很多问题,例如:依赖于时间的应用会造成数据的错误,各种日志打印的顺序紊乱,这将会影响问题的诊断,严重的可能会导致集群宕机或者重新启动集群时节点无法加入集群。

在Oracle 11gR2前,集群的时间是由NTP同步的,而在11gR2后,Oracle引入了CTSS组件,如果系统没有配置NTP,则由CTSS来同步集群时间。NTP和CTSS是可以共存的,且NTP的优先级要高于CTSS,也就是说,如果系统中同时有NTP和CTSS,那么集群的时间是由NTP同步的,CTSS会处于观望(Observer)模式,只有当集群关闭所有的NTP服务,CTSS才会处于激活(Active)模式。在一个集群中,只要有一个节点的ntp处于活动状态,那么集群的所有节点的CTSS都会处于激活(Active)模式。需要注意的是,要让CTSS处于激活(Active)模式,则不仅要关闭ntp服务(/sbin/service ntpd stop),还要删除/etc/ntp.conf文件(mv /etc/ntp.conf /etc/ntp.conf.bak),否则不能启用CTSS。

具体操作步骤如下:

  1. # more /etc/sysconfig/ntpd 
  2.  
  3. Drop root to id 'ntp:ntp' by default
  4.  
  5. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g" 

修改/etc/sysconfig/ntpd的配置

修改前

  1. OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g" 

修改后

  1. OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid -g" 

RAC集群的操作系统是RHEL 6,它的服务是通过service启动,所以通过下面命令重启NTP服务解决问题:

  1. service ntpd restart 

参考资料:

https://www.oracledistilled.com/grid-infrastructure/prvf-5439-ntp-daemon-does-not-have-slewing-option-%E2%80%9C-x%E2%80%9D-set-on-node/

https://www.cnblogs.com/lhrbest/p/9253449.html

 

赞 ()
分享到:更多 ()

相关推荐

内容页底部广告位3
留言与评论(共有 0 条评论)
   
验证码: