1. 时钟偏差产生原因
linux系统有两个时钟:一个是由主板电池驱动的硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。
另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时 钟是要读取RTC时间来进行时间同步
这两个时钟通常会有一些误差,所以长时间可以导致 这两个时钟偏离的比较多,最简单的保持两个时间同步的方法是用软件测出他们之间的误差率,然后用软件进行修正。在每次重新启动系统的时候,系统都会用 hwclock命令对时间进行同步。如果内核时钟在每一个时间中断都快或者慢的话,可以用时钟同步命令进行调整,使得RTC和内核时间走的快慢一 致。同步工具ntp、chrony
对CDH平台的影响
服务出现时钟偏差报警,长时间会导致部分服务无法正常运行。
2. 如何确认产生了时钟偏差
ntpq
ntpq -pn命令查看一下运行状态
ntpq是ntp服务的程序名,-p表示打印链接信息,-n表示展现ip而不是域名加密
remote:NTP服务器的名称
*表示目前正在使用的NTP服务器;
+表示已经链接成功,而且能够做为下一个提供时间更新的候选者;
#表示服务正常可是不在使用节点以内
x表示没法链接
refid:NTP服务器使用的上一级NTP服务器
st:NTP服务器的级别。由于NTP是层级结构,有顶端的服务器,多层的Relay Server再到客户端,所以服务器从高到低级别可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器。
when:上一次成功请求之后到现在的秒数。
poll:本机与NTP服务器多少时间进行一次同步(单位为秒)。一开始运行NTP时,poll值小,同步频率高,可以尽快调整到正确的时间范围;之后poll值会逐渐增大,同步的频率也就会相应减小。
reach:这是一个八进制值,用来测试能否和服务器连接,每成功连接一次它的值就会增加
delay:从本机发送同步要求到ntp服务器的round trip time
offset:本机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。offset越接近于0,主机和ntp服务器的时间越接近
jitter:这是一个统计值。它统计了在特定个连续的连接数里offset的分布情况,简单地说这个数值的绝对值越小,主机的时间就越精确
3. 如何解决时钟偏差
行命令:
ntpdate [IP或域名]即可手动进行时间同步。
在内网架构中,如果设备比较多,则可以使用内置的NTP服务器,如果设备比较少,则可以选择互联网上的NTP服务。常用的NTP服务有阿里云的NTP服务,域名:ntp1.aliyun.com
使用命令如下:需先停只ntp服务在操作命令
ntpdate ntp1.aliyun.com
或者ntpdate -u ntp1.aliyun.com // 使用ntpdate命令同步指定外网时间
当执行上述命令的时候,我们是强制性的将系统时间更改为阿里云的NTP服务器的时间,但是随着系统的运行,系统时间又会逐步的发生偏移,因此,我们可以采取cron定时任务的方式,将上述命令写成定时任务脚本,使其定期执行。
注意: 本人博客只提供参考,可能会有书写不规范情况等问题,不要复制粘贴。可结合其他网站学习