4

NTP 在保持一组服务器时间同步方面有多准确?

我正在编写一个服务,它需要一组同步到二级粒度的服务器(一些充当客户端,一些充当服务器)。我想知道 NTP 是否是最好的使用方法,或者是否有更好的方法?

我应该在其中一个上运行 ntp 服务器,让其他人使用它作为源吗?NTP的任何其他建议/恐怖故事?

所有服务器都是linux的。

更新:服务水平:

我希望一台服务器是准确的 UTC(秒级,而不是微秒等),并且我希望所有其他服务器与一台服务器的 ts 相同,无论它是否准确的 UTC(事件由这台服务器以不同的时间间隔从多个位置接收,我要求所有这些事件都处于相同的“相对” ts。不,我不能让主服务器 TS 事件,因为那会需要存储偏移量(事件实际发生的时间和记录的时间,这需要大量额外的工作),这会使事情变得不必要地复杂化。

我目前已将一台服务器设置为第 2 层时间服务器,使用一些 startum 1 GPS 源作为 ntp.conf 中的服务器,在其他服务器上,我已将此服务器设置为 ntp.conf 中的唯一服务器。

我希望这已经足够了。谢谢!

4

3 回答 3

2

对于大多数应用程序,NTP 将使您保持在一秒钟之内。

如果您需要更高的精度,并且所有服务器都在运行 *nix,我会研究实现Precision Time Protocol。它涉及多个父时钟和协商以在网络中找到可靠的源。这是为电力行业中的事件加时间戳而推荐的时间协议(例如,在日志文件中为继电器动作和计量警报提供准确的时间戳,以帮助调查2003 年的东北大停电)。

于 2011-02-19T05:44:59.253 回答
1

首先,您可以查看Wikipedia NTP 页面。

基本上,首先(我经常宣扬这一点)说明你想要的服务水平可能是什么。您需要准确的 UTC 吗?忍到什么程度?也就是说,你真的需要知道现在几点了吗?

或者您只是想要系统之间的精确同步?

我们在谈论多少台机器,它们是否在地理上分布?

一些选项:

  • 准确时间:至少设置一台服务器作为第 2 层,并让它引用至少 3 台第 1 层服务器。如果你有很多服务器,那就多做一个;显然,通过没有单点故障,您可以获得更高的可靠性。

  • 精确同步:设置 NTP 对等体。

  • 准确的时间和地理分布:多于一台第 2 层服务器,同上,每个集群有一台“附近”;他们可以查看第 2 层以提高投票率。

我认为没有什么比 NTP 更广为人知的了。

更新另一个问题提到了 PTP 精确时间协议 (IEEE 1588) 这非常适合精确同步,但取决于多播。

此外,值得考虑获取 GPS 时间源。

于 2011-02-19T05:45:14.097 回答
0

是的,将您的一台服务器设置为您的内部 NTP 服务器,并将其他服务器同步到该服务器。我记得,它通常会在几毫秒内为您提供准确度。

如果您的任何服务器都偏离了——我不记得什么是“偏离”——NTP 不会修复它。有一种方法可以自动解决这个问题,但我现在不记得了。

于 2011-02-19T05:35:15.293 回答