内网中chronyd服务无法时钟同步问题

一、故障现象

服务器:192.168.1.15

操作系统:Anolis OS release 8.6

授时服务器:192.168.1.1

在/etc/chrony.conf文件中已配置:server 192.168.1.1 iburst

故障现象:无法同步,本服务器始终比授时服务器快4分钟左右

二、解决步骤

2.1 修改同步间隔

$ chronyc sources  
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.1.1                  1  10   377   722  +287.2s[+287.2s] +/-  10.5s

从以上表格中可以看出:

  • Poll同步间隔为 10(单位:秒的 2 次方,即 2^10=1024 秒,约 17 分钟)
  • ^?:表示同步异常
$ chronyc tracking   
Reference ID    : 00000000 ()
Stratum         : 0
......
Leap status     : Not synchronised

由上面可以看到,目前尚未同步。
现在先缩小同步间隔

$ vi /etc/chrony.conf  # 修改为:
server 192.168.1.1 iburst minpoll 4 maxpoll 6
$ systemctl restart chronyd 
$ chronyc makestep    # 手工同步一次

说明:

  • 这里的4和6指的是2的指数,2的4次方即16,也就是16秒同步一次
  • minpoll与maxpoll分别代表最小与最大同步间隔

2.2 定义maxdistance

手工同步后,再次检查系统时间,仍然与授时服务器相差4分钟

$ chronyc tracking | grep sync  # 仍然未同步
Leap status     : Not synchronised

$ grep maxdistance /etc/chrony.conf  # 没有任何结果返回,默认情况下,chronyd 对 “一次性调整的最大时间偏差(maxdistance)” 有严格限制(通常为 1 秒),过大的偏差会被拒绝,避免剧烈调整影响系统。
$ chronyc sources    # 实际相差了285秒
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? 192.168.1.1                  1   6   377    35  +285.6s[+285.6s] +/-  10.8s

$ echo "maxdistance 500.0" >> /etc/chrony.conf    # 容忍500秒以内的跳变
$ systemctl restart chronyd 
$ chronyc makestep
200 OK
$ chronyc tracking
Reference ID    : C0A8350B (192.168.1.1)
Stratum         : 2
......
Leap status     : Normal

三、总结

使用chronyd进行时间同步时,仅仅配置了授时服务器是不够的,当终端与授时服务器时间相差过大时,终端会拒绝时间”跳变“同步,此时手工同步也会失败,因此,还要加上maxdistance配置。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容