>我有8个ubuntu 14.04 LTS服务器,没有一个可以访问互联网
>我想在服务器上运行ntp服务器(如果更好的话,或者更多)运行ntp服务器,并让所有其他服务器连接到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
注意:我使用Multi-Tabbed 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 on all clients.仍然只有2个成功的客户和5个拒绝客户.
拒绝客户端显示此输出.延迟偏移值看起来很高,因为失败的客户端会随时间漂移.也许他们不相信服务器更新时间,因为延迟/偏移是如此之高?
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客户端有关.有没有办法强迫他们改变时间?
如果你可以访问一个窗口,你可以建立一个half-decent stratum-1 server约50英镑,或一个好的一个100英镑.你可以做更好的事情来构建类似的东西,然后指向其他客户端.正确的时间戳比单纯的时间戳要好得多,尤其是对于取证.
但如果你绝对必须做你正在做的事情,那么你需要意识到你正在歪曲ntpd,这将意味着理解你正在做的事情.
在服务器上
server 127.127.1.0 prefer fudge 127.127.1.0 stratum 10
意思是“使用当地的无纪律时钟,就好像它是权威的”,这就是你想要的.不过,我不确定你为什么要强迫它进入第10层;考虑删除第10层,并让驱动程序提供其默认层数为0.在客户端上
server 192.168.178.24 iburst fudge 192.168.178.24 stratum 10
毫无意义.软糖127.127.x.y保留用于强制使用各种本地时钟驱动程序.给它任何其他地址是没有意义的.从客户端删除软糖线,然后将它们指向服务器.你也使用一个封闭的网络,所以放弃所有安全的东西,直到你得到这个工作:
restrict default
如果这似乎仍然不起作用,我们需要在服务器和行为不良的客户端上看到ntpq -c as和ntpq -c pe的输出,在至少十分钟的不间断运行之后.
编辑:您在下面的评论中写道:“我认为偏移/抖动非常高,因为失败的客户端
时间漂移“.
我想你可能是对的. This chap’s blog建议他有相同的经验:客户端时钟非常糟糕,以至于它欺骗了当地的ntpd,认为服务器不可靠.他写了
the reason for the huge jitter finally seems clear! Our clock drifts
so fast that the offset will go up by several seconds through our few
measurements
鉴于你的客户的时间最快就会失去同步(将服务器标记为“拒绝”),我认为你看到了同样的效果.他的解决方案是使用adjtimex手动调整内核时钟(调整tick值),直到系统时钟不那么任性为止,此时ntpd有机会将服务器识别为OK,并同步到它.你应该首先尝试对最坏的客户进行尝试,看看它是否有帮助.