所有节点的时间必须同步,这通常是通过配置NTP服务器实现的。如果用户的网络中已经有一台时间服务器,那么可以所有节点都指向它,否则可以从集群中挑选一个节点作为时间服务器,让其他节点与它同步。
下面分别演示这两种方法:
1、如果公司网络中已经有一台时间服务器,如:192.168.0.1是一台ntp时间服务器
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
此时NTP服务器的配置文件是/etc/ntp.conf,在每个节点编辑这个文件。
[root@RAC01]# vi /etc/ntp.conf
编辑后的内容如下,首选公司的时间服务器。
server 192.168.0.1 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
[root@RAC02]# vi /etc/ntp.conf
编辑后的内容如下,首选公司的时间服务器。
server 192.168.0.1 prefer
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
2、如果没有外部时间服务器
这时公司选择集群中某个节点作为时间服务器,NTP服务只需要很少的系统资源。假设选择主节点作为时间服务器(RAC01),从节点(RAC02)向它同步,其配置方法如下。
编辑主节点的/etc/ntp.conf文件,编辑后的内容如下:
[root@RAC01]# vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 11
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
编辑从节点的/etc/ntp.conf文件,编辑后的内容如下:
[root@RAC02]# vi /etc/ntp.conf
编辑后的内容如下,首选公司的时间服务器。
server 10.202.73.1 prefer #注意10.202.73.1为主节点的IP地址
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
配置完成后,启动NTP服务。
[root@RAC01]# /etc/init.d/ntpd start
[root@RAC01]# chkconfig –level 345 ntpd on
3、查看执行情况(主从)
[root@cc-svr-a ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*CC-Node-02 LOCAL(0) 12 u 58 64 17 0.226 -22.698 29.261
4、編輯腳本自動同步時間
[root@RAC01]chkconfig ntpd on
[root@RAC02]crontab -e
* 12 *** /user/sbin/ntpdate 10.202.73.1 >> /root/ntpdate.exe
【注意】啟用同步ntp; client端的ntpd 服務需stop;
[root@RAC02]#/usr/sbin/ntpdate 10.202.73.1
8 Dec 23:36:25 ntpdate[7645]: the NTP socket is in use, exiting
[root@RAC02]# service ntpd stop
Shutting down ntpd: [ OK ]
[root@RAC02]# /usr/sbin/ntpdate 10.202.73.1
9 Dec 11:48:20 ntpdate[7662]: step time server 10.202.73.1 offset 43900.766507 sec
5、配置hangcheck-timer模块
9.2以前使用一个名为watchdogd的用户空间监视后台程序来监视集群的状态情况,并在出现故障时重新启动RAC节点。从Oracle9.2.0.2开始,此监视后台程序已被名hangcheck-timer的模块所代替,该模块可以更好地解决可用性和可靠性问题。hang-check计时器被加载到Linux内核中并检查系统是否挂起。它将设置一个计时器,并在特定的时间量之后检查该计时器。有一个用于检查挂起情况的可配置阈值,如果超过该阈值,计算机将重新启动。尽管Oracle CRS并不需要hangcheck-timer模块,但Oracle强烈建议使用它。
hangcheck-timer模块使用了一个基于内核的计时器,该计时器周期性地检查系统任务调度程序,以捕获延迟,从而确定系统的运行状况。如果系统挂起或暂停,则计时器重置该节点。hangcheck-timer模块使用时间戳计数器(TSC) CPU寄存器,该寄存器在每个时钟信号处递增。由于此寄存器由硬件自动更新,因此TCS提供了更精确的时间度量。
两个参数,即hangcheck_tick(定义系统检查频率,默认60s,oracle建议30s)和hangcheck_margin(定义在重置RAC节点前的最大挂起延时,默认180s,oracle建议180s)来确定节点是否出现故障。hangcheck-timer模块会根据hangcheck_tick的设置,定时检查内核。只要响应时间小于hangcheck_tick+hangcheck_margin,都会认为内核运行正常。否则,就意味着运行异常,模块会自动重启系统。
【注意】:crs的参数MissCount必须大于hangcheck_tick+hangcheck_margin的和(需考证)
miscount的值用crsctl get css misscount查询,10gR2 linux平台,默认60s
设置hangcheck内核模块参数:
vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
设置hangcheck内核模块开机加载
vi /etc/rc.d/rc.local
/sbin/modprobe hangcheck-timer
要立即加载模块,执行:
modprobe -v hangcheck-timer
检查加载情况:
[root@RAC01]# lsmod | grep hangcheck_timer
hangcheck_timer 5593 0