一、故障现象
服务器: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配置。