我已经尝试过关于如何在ubuntu上设置本地ntp服务器的几个指南,但似乎没有一个正确工作。由于某种原因,我的服务器在时间上有很大的漂移,我必须让他们的时间保持在一起,因为我运行的数据库需要这样做。
目前,我的服务器(ip .24)运行/etc/ntp.conf:
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
# Give localhost full access rights
restrict 127.0.0.1
# Give machines on our network access to query us
restrict 192.168.178.0 mask 255.255.255.0 nomodify notrap
broadcast 192.168.178.0关于“客户”:
# Point to our network's master time server
server 192.168.178.24 iburst
fudge 192.168.178.24 stratum 10
restrict default ignore
restrict ::1
restrict 127.0.0.1
restrict 192.168.178.24 mask 255.255.255.255 nomodify notrap noquery
driftfile /var/lib/ntp/drift
minpoll 4
maxpoll 5注意:我已经使用多选项卡Putty同时向所有ntp客户端发送以下命令。除了服务器之外,我已经停止了所有的ntp服务,使用sudo ntpdate 192.168.178.24让他们获取日期,然后重新启动ntp服务。这成功了。在命令完成后,所有服务器都显示了相同的日期。但是,大约10分钟后,我的服务器显示了以下时间:
Fr 30. Sep 11:16:53 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016 (server .24)
Fr 30. Sep 11:16:50 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:17:05 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016如何让它们正确地同步到ntp服务器?我怎样才能降低投票时间?看来我的服务器不同步了,所以我需要他们再次检索“正确”的时间.
对于“正确”时间,我指的是对所有服务器来说都是相同的时间。它不一定需要准确的世界时间(如果你这样称呼它)。
编辑:我已经尝试过建议的配置设置。据我所知,这就是我的服务器/客户端信任的样子。在此期间,我已经看到我的.24服务器实际上正在陷入更糟糕的时期。.20服务器是最精确的服务器,我现在使用.20服务器来承载ntp服务器。很抱歉给你造成了混乱。
服务器配置:
# Use the local clock
server 127.127.1.0 prefer
fudge 127.127.1.0
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
# Give localhost full access rights
restrict default
# Give machines on our network access to query us
restrict 192.168.178.0 mask 255.255.255.0 nomodify notrap
broadcast 192.168.178.0为客户:
# Point to our network's master time server
server 192.168.178.20 iburst
restrict default
driftfile /var/lib/ntp/drift
minpoll 4
maxpoll 5服务器上的ntpq -as和ntpq -pe:
ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 41906 963a yes yes none sys.peer sys_peer 3
2 41907 8811 yes none none reject mobilize 1
ntpq -c pe
remote refid st t when poll reach delay offset jitter
==============================================================================
*LOCAL(0) .LOCL. 5 l 60 64 377 0.000 0.000 0.000
192.168.178.0 .BCST. 16 u - 64 0 0.000 0.000 0.000像这样的五倍类似的输出(这些服务器在时间上漂移):
ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 62104 9024 yes yes none reject reachable 2
ntpq -c pe
remote refid st t when poll reach delay offset jitter
==============================================================================
hadoop20.xx LOCAL(0) 6 u 27 64 377 0.151 63591.8 33407.0两个人(最有可能?)工作客户:
ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 7757 963a yes yes none sys.peer sys_peer 3
ntpq -c pe
remote refid st t when poll reach delay offset jitter
==============================================================================
*hadoop20.xx LOCAL(0) 6 u 18 64 377 0.183 7.883 3.015编辑2:
我已经使用了sudo service ntp stop,sudo ntpdate 192.168.178.20,等待ntpdate完成,sudo service ntp start在所有客户端上。仍然只有2个成功的客户和5个拒绝客户。
拒绝客户端显示此输出。delay + offset值看起来很高,因为失败的客户端会随时间变化。也许他们不信任服务器更新时间,因为延迟/偏移量太高了?
ntpq -c as
ind assid status conf reach auth condition last_event cnt
===========================================================
1 20981 905a yes yes none reject sys_peer 5
ntpq -c pe
remote refid st t when poll reach delay offset jitter
==============================================================================
hadoop20.xx LOCAL(0) 6 u 34 64 3 0.166 18665.9 16201.3我也尝试使用这个https://askubuntu.com/a/256004答案,它工作了大约30秒,然后状态更改为“拒绝”再次!ntpdate -s 192.168.178.20也一样。这很可能与拒绝服务器时间的ntp客户端有关。有没有办法强迫他们改变时间?
发布于 2016-09-30 10:41:57
不要这样做。我是认真的。只是不要。人们总是想出这样的想法: NTP的设计目的是让一堆机器都拥有相同的时间。但事实并非如此。它的设计非常谨慎,让许多机器都尽可能接近正确的时间,而这并不是一回事。
如果您可以访问一个窗口,您可以为If 50构建一个半体面阶层-1服务器,也可以为If 100构建一个很好的。你会做得更好,建立这样的东西,然后指向其他客户。正确的时间戳比仅仅是自我一致的时间戳要好得多,尤其是对法医而言。
但是如果你绝对必须做你正在做的事情,那么你需要意识到你在扭曲你的行为,这将意味着理解你在做什么。
在服务器上
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 10意思是“使用本地无纪律的时钟,就像它是权威的”,这就是你想要的。但是,我不知道为什么要将它强制到10层;考虑删除stratum 10,让驱动程序提供它的默认层0。关于客户
server 192.168.178.24 iburst
fudge 192.168.178.24 stratum 10一点意义都没有。fudge 127.127.x.y是为强制使用各种本地时钟驱动程序而保留的。给它其他地址是没有意义的。从客户机中删除fudge行,并将它们指向服务器。您还在使用一个封闭的网络,所以在您完成此工作之前,请删除所有的安全内容:
restrict default如果这看起来仍然不起作用,那么我们需要在服务器上和行为恶劣的客户机上看到ntpq -c as和ntpq -c pe的输出,至少要经过十分钟的不间断运行。
编辑:你在下面的评论中写道:“我认为偏移量/抖动很高,因为失败的客户会在时间上漂移”。
我想你可能是对的。这家伙的博客表示,他也有过同样的经历:客户端时钟太差了,以至于让本地ntpd误以为服务器是不可靠的。他写
巨大的抖动的原因似乎终于清楚了!我们的时钟漂移得如此之快,通过我们的几次测量,偏移量将上升几秒钟。
考虑到是客户端的时间以最快的速度结束,而同步失败(将服务器标记为“拒绝”),我认为您也看到了同样的效果。他的解决方案是使用adjtimex手动调优内核时钟(调整tick值),直到系统时钟不再那么任性,此时ntpd有机会将服务器识别为OK,并与其同步。您可能应该先在最差的客户端上尝试一下,看看它是否有用。
发布于 2020-03-11 17:46:54
您可以完全放弃NTP,在“服务器”上手动设置时间并发出以下命令:
ssh root@192.168.178.xxx "date -s \"$(date "+%F %T")\""通过你所有的“客户端”IP循环它,你就完成了!
说明:本地时间将通过SSH“复制”到远程计算机。
https://serverfault.com/questions/806274
复制相似问题