比较NTPD和ntpdate


23

这两种同步服务器的方式之间的优缺点是什么?

在我看来,您的服务器每天的漂移时间可能不会超过1秒,因此在crontab上使用ntpdate是可以的。但是我听说你可以在这里使用冗余的NTP服务器

http://www.pool.ntp.org/en/use.html

为了在故障情况下保持同步时间。

你有什么建议吗?

Answers:


26

NTP算法包括一些信息,可让您计算和修复服务器时钟中的漂移。NTPD包括使用此功能使您的时钟保持同步的能力,并且比未运行NTPD的计算机上的时钟更准确地运行。NTPD还将使用多台服务器来提高准确性。

ntpdate不会保留任何状态为您执行此服务,因此不会提供相同的准确性。它将为您提供服务器列表,它将用于尝试为您提供更好的结果,但这不能替代NTPD中提供的复杂算法,该算法可跟踪您随时间推移从每台服务器上的漂移。

NTPDATE立即纠正系统时间,这可能会导致某些软件出现问题(例如,破坏现在看起来很旧的会话)。NTPD故意缓慢地纠正系统时间,避免了该问题。您可以在启动NTPD时添加-g开关,以允许NTPD首次进行较大的更新,这等效于在启动NTPD之前运行一次ntpdate,建议一次这样做。

出于安全方面的考虑,ntp服务器不会在未启动的连接上重新连接,这意味着您的防火墙应该能够告诉您已启动ntp请求并允许返回流量。为了使NTPD正常工作,无需为任意连接而打开端口。

在ntpdate(8)手册页中:

ntpdate可以根据需要手动运行以设置主机时钟,也可以从主机启动脚本运行以在启动时设置时钟。在某些情况下,这对于在启动NTP守护程序ntpd之前初始设置时钟很有用。也可以从cron脚本运行ntpdate。但是,必须注意的是,带有人为设计的cron脚本的ntpdate不能替代NTP守护程序,后者使用复杂的算法来最大程度地提高准确性和可靠性,同时最大程度地减少资源使用。最后,由于ntpdate不像ntpd那样约束主机时钟频率,因此使用ntpdate的准确性受到限制。


比在启动ntpd之前使用ntpdate更好:只需使用-g!
亚历克斯·J

8

与ntpdate相比,首选ntpd,因为它可以进行平滑的时间校正,而不是时钟跳动。当日志向后跳时,您如何看待日志?ntpdate还将根据需要透明地在服务器之间切换。

至于需要开放端口(如Kyle所述),可以将新版本的ntpd(例如,我的Debian服务器上的4.2.4)配置为通过密码认证向LAN广播/组播。

编辑:另请参阅此问题


5

我通常建议您运行NTPD,并将您的服务器与组织中的指定时间服务器同步。该内部服务器通常将与公共NTP服务器之一同步(如您所链接)。

我使用ntpdate方法没有任何问题,但是它似乎比运行一个真正的ntpd守护程序更hackhack。


3

我听说过运行ntpd的虚拟机上的时钟偏斜问题。我还听说有人通过运行针对多个池服务器调用ntpdate的常规cron作业来纠正此问题。我没有这些问题,但是我已经听过好几次了。


1
他们将要在VM上运行无中断内核
goo

1
ESX VM上的VMware工具软件负责同步时间,因此请勿在具有VMware工具的VM上使用ntpd。而是在主机上设置NTPD,然后让VMware工具完成其余工作。
dunxd

3

如其他地方所述,NTP提供了平滑的时间校正。如果服务器上的应用程序不介意丢失整整几秒钟,或者再次执行相同的几秒钟,那么ntpd不会比ntpdate获益更多。

另一方面,如果您确实具有对秒敏感的对时间敏感的应用程序,或者甚至对部分秒敏感的应用程序,则ntpd到目前为止是更好的选择。Novell eDirectory时间戳更新用于更新冲突处理,如果更新进行得非常快(例如在早上登录高峰期),则此更新至关重要。Syslog服务器需要时间精确到至少半秒,才能保持理智的日志。

对于我在家的MythTV电视机,我注意到它距离有线电视提供商考虑的时间还差几秒钟,因此我在其上使用NTP。对于工作中的UPS监视服务器,出于相同的原因,我使用crontabbed ntpdate,凯尔·霍奇森(Kyle Hodgson)指出,因为它是堡垒主机,即使我已将应用程序锁定,我也不想打开该端口。对于那个应用程序来说,确实不是一件容易的事。

至于冗余,我们在网络上至少维护两个时间主机,并将所有内部主机指向这两个时间主机。然后,这两个跟踪不同的Internet NTP主机。而且,它们以对等方配置进行配置,因此如果我们的Internet链接断开,它们可以以协商一致的方式保持彼此之间的时间。可靠的NTP绝对是可以设计的。


1

在访问和强化至关重要的服务器上,我使用了这样的推理:我所依赖的ntpd版本xntpd需要一个开放的UDP端口123。由于我只希望打开tcp 22和80,所以我使用了ntpdate而是在crontab中。我从来没有听说过为什么需要它的一个很好的理由,或者说我没有回想过。

使用crontab的ntpdate调用的缺点之一是它不能优雅地处理漂移校正。ntpdate,iirc会在得知时钟已过时时立即更新时钟-ntp守护程序通常会轻柔地纠正漂移。这样可以使您的日志保持理智-例如,您可以想象在繁忙的Web服务器上,如果RTC漂移了几分钟,那么第二天阅读Web日志可能会推断出人们能够安全地进行攻击登录之前输入的URL,因为网络匹配会乱序。


1

ntpdate用于一次性更新,如果您希望定期同步时间,则可以使用该服务ntpd。

据我所知,没有令人信服的理由不使用ntpd


0

您不需要使用crontab,这就是ntpd的用途。

最初,当时间用尽时,一种方法是简单地停止ntpd,然后运行ntpdate ntp.server.com使其恢复同步,然后再次启动ntp。

如果您的网络很大,我可能会设置几个本地ntp服务器,并让所有主机使用它们。


0

请参阅此讨论以了解为何仍需要并使用“ ntpdate”。

总结一下:即使进行-g选项,在进行大量时间调整时ntpd的速度较慢


-3

对于家庭使用,ntpdate确实不是什么大问题。有一个原因是它“速度较慢”。在PRODUCTION ENTERPRISE环境中将ntpdate与cron一起使用的任何人都是白痴。


2
有用途。例如,服务器需要任何种类的最小开放端口且时间分辨率要求为+/- 1000ms左右,那么cron + ntpdate是维持时间同步的完美有效方法。
sysadmin1138
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.