项目场景:
提示:这里简述项目相关背景:
设备类型及版本:某国产品牌负载均衡器,十年前上线设备,底层系统为裁剪过的CentOS早期版本。
网络环境:内网,与互联网不通。
问题描述
`
需要解决的问题:设备时钟每小时慢5秒,累计误差太大,影响设备正常使用
解决方法:使用内网中NTP服务器(10.80.3.71),自动时间校正。Ntpdate配合Crontab定期执行。
解决方案:
1.采用ntpdate命令,在crontab -e里设置ntpdate执行:
20 * * * * /usr/sbin/ntpdate 10.80.3.71 >> /var/log/ntpdatehourly.log 2>&1
其中ntpdatehourly.log文件为自命名log文件,需先建立空文件。
2. /etc/crontab文件为周期执行命令的全局配置文件,其中缺省的MAILTO=root(以root用户登录的话),系统服务未开启mail服务,且设备不能联通外网,难以安装,因此采用上述log文件方式记录命令执行结果。
3./var/log/secure中loguid报错的解决(sshd及crond两个服务):编辑/etc/pam.d/crond,注释掉session required项,sshd服务可能影响ssh,不做变动。
结果验证(初次校正时间11:20):
1.来自/var/log/cron:
Feb 27 11:20:01 adc2 crond[1020]: (root) CMD (/usr/sbin/ntpdate 10.80.3.71 >> /var/log/ntpdatehourly.log 2>&1)
2.来自/var/log/secure:
Feb 27 10:50:01 adc2 crond[660]: pam_loginuid(crond:session): set_loginuid failed opening loginuid
Feb 27 11:01:01 adc2 crond[689]: pam_loginuid(crond:session): set_loginuid failed opening loginuid
Feb 27 11:03:30 adc2 sshd[703]: Accepted password for root from 10.80.6.21 port 25670 ssh2
Feb 27 11:03:30 adc2 sshd[703]: pam_unix(sshd:session): session opened for user root by (uid=0)
Feb 27 11:03:30 adc2 sshd[703]: pam_loginuid(sshd:session): set_loginuid failed opening loginuid
Feb 27 11:41:36 adc2 sshd[1082]: Accepted password for root from 10.80.6.21 port 26327 ssh2
Feb 27 11:41:36 adc2 sshd[1082]: pam_unix(sshd:session): session opened for user root by (uid=0)
Feb 27 11:41:36 adc2 sshd[1082]: pam_loginuid(sshd:session): set_loginuid failed opening loginuid
3.来自ntpdatehourly.log
root@adc2 ~]# more /var/log/ntpdatehourly.log
#ntpdate运行结果日志
27 Feb 11:20:02 ntpdate[1021]: step time server 10.80.3.71 offset 0.568719 sec
感想:
问题并不大,由于设备是在线生产系统,且底层系统版本较低,不能上外网,以虚拟机方式先后尝试多种方式都不成功,百度无数次。
网上搜索到的各种文章无数,但真正有用的不是太多,并且有的文章完全抄袭,抄的还是错的,导致各种尝试(也有设备底层系统裁剪过的原因,如loginuid问题),出错后crontab会视为CMD执行不成功而重复执行(结果也验证了执行不成功)。
crontab定期执行的设置灵活性很强,也容易出错,如:
* */4 * * * ntpdate x.x.x.x
实际执行时会在4小时后每一分钟都执行一次。
网络搜索是个好东西,只是真伪需要自己验证,而那些故意把错误信息放上网的要摸下自己的良心,痛不痛。还有不少不管三七二十一就抄了人家内容发表的,你说你看懂了加以注释发表也行啊,有的文章是牛头不对马嘴。
后续:
半天时间运行后,有一对设备(一共好多对老年ADC设备在线)时钟特别不准的设备发现新的报错:集群心跳超时6秒,发生时间在预定的ntpdate时,确定是校正时间导致的,因为这对难兄难弟每小时慢5秒。
因此改为每天深夜及凌晨给校正一次。
没有收到业务故障的反映,但集群报错还是会有不好影响,特别是用户爸爸看到这种serious错误,一定心发紧。
顺便问下各位高手,Linux软件时钟怎么会慢这么多?我看硬件时钟似乎是对的。这个时钟错误具体会对哪些方面造成影响?