比较 NTPD 和 ntpdate

比较 NTPD 和 ntpdate

这两种同步服务器的方式各有什么优缺点?

在我看来,你的服务器每天的偏差可能不会超过 1 秒,因此 crontab 上的 ntpdate 就可以了。但我听说你可以在这里使用冗余 NTP 服务器

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

以便在发生故障时保持时间同步。

你有什么建议吗?

答案1

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 的准确性是有限的。

答案2

ntpd 比 ntpdate 更受欢迎,因为您可以获得平滑的时间校正,而不是时钟跳变。如果日志中的时间出现向后跳变,您认为日志有什么意义?ntpdate 还会根据需要在服务器之间透明地切换。

至于需要开放端口(正如 Kyle 所提到的),可以将较新版本的 ntpd(例如,我的 Debian 服务器上的 4.2.4)配置为向 LAN 进行广播/多播,并使用加密认证。

编辑:另请参阅这个问题

答案3

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

我已经使用过 ntpdate 方法,没有任何问题,但它似乎比运行真正的 ntpd 守护进程更具黑客性。

答案4

正如其他地方提到的,NTP 提供了平滑的时间校正。如果您服务器上的应用程序不介意丢失整秒或重复执行相同的秒数,那么 ntpd 不会比 ntpdate 为您带来太多好处。

另一方面,如果您确实有对时间敏感的应用程序,这些应用程序对秒数敏感,甚至对部分秒数敏感,那么 ntpd 无疑是更好的选择。Novell eDirectory 为更新冲突处理设置时间戳,如果更新速度非常快(例如在早上登录高峰期),这一点就变得至关重要。系统日志服务器需要至少精确到半秒的时间才能保持日志的完整性。

对于我家里的 MythTV 机顶盒,我会注意到它与有线电视提供商认为的时间甚至相差几秒钟,因此我会使用 NTP。对于工作中的 UPS 监控服务器,我使用 crontabbed ntpdate,原因与 Kyle Hodgson 指出的相同,因为它是堡垒主机,即使我已锁定应用程序,我也不希望该端口打开;对于该应用程序来说,与 true 相差一秒并不是什么可怕的事情。

至于冗余,我们在网络上维护至少两个时间主机,并将所有内部主机指向这两个主机。然后这两个主机跟踪不同的互联网 NTP 主机。更重要的是,它们配置为对等安排,因此如果我们的互联网链接中断,它们可以以一致的方式在它们之间保持时间一致。绝对可以设计出强大的 NTP。

相关内容