声明:首先我对NTP的了解不是太过于深入,这只是我在调试过程中遇到的问题,折腾了挺久,网上的资料对我遇到的问题,没有解答,可能是因为应用的场景不同导致的。下面是我对我遇到问题的一些解决方案
背景:一台机器(A)有 rtc 芯片作为 NTP server
另外一台机器(B)没有 rtc芯片 作为 NTP client
想让两台机器实现时间同步,相当于只是两台机器进行通信,不和外界交互
机器(A) 用 systemd 管理 ntpd 服务, 机器(B) 用ntpdata 去实现同步
机器(A) 在/etc/ntp.conf 下进行配置
两台机器同时启机
出现了问题ntpdate[183]: no server suitable for synchronization found
需要等待大概5分钟作用才能够 同步上(网上资料对于这点我没找到能够减少或者解决方法)
这显然不是我想要的,时间过长了
这是我对该条件下的一些理解,有什么不对请大佬指证一下
NTP server 相当于就是一个中间介质,把获取到的本地地址,在发给 NTP client
首先 机器(A) 作为 NTP server 是要获取我本地的时间的,而出现上面那个问题,也是 ntp server端去同步时间出现问题,这就让我不明白了,获取我本地时间也不需要这么长时间才对啊,
后面看到 prefer 这个参数: 表示优先使用的服务器
下面是对于我这个问题的解决方案:
对 机器(A)/etc/ntp.conf 进行配置
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 14
restrict default
加上prefer 这个参数之后,server 配为本地,这下就解决了我 机器(A)ntpd 服务一启动 机器(B)就能同步上时间
我还有些疑惑就是,我明明只配置了 本地地址,为啥还要配置prefer 才能表示优先使用,不然就会同步其他地方的时钟?下面再研究吧。
总结:配置本地地址作为时钟源后,需要在后面加上 prefer 参数,来提示优先使用,否则会出现NTP server 去同步其他时钟源的情况,导致需要等待大约5分钟才能 让 NTP client 进行同步