如何保持多台服务器的时间同步

如何保持多台服务器的时间同步

我希望一组服务器拥有完全相同的时间。所有服务器都使用 UTC 时区。

当前使用 NTP,我仍然看到它们似乎每次相差 10-20 毫秒。

让它们每次都准时到达的最佳方法是什么?

答案1

将 ntpd 连接到 LAN 之外的 NTP 服务器以进行时间同步可能会导致您看到的不一致,因为每个连接都必须经过多个路由器,每个路由器的延迟都不可预测,具体取决于流量。如果每台服务器都自行连接,则所有服务器之间的时间将略有偏差。

为了避免不一致,最好的方法是创建一个本地 NTP 服务器,与外部 NTP 服务器池同步时间,并使用该本地 NTP 服务器作为本地服务器的“主时钟”:

  1. 本地 NTP 服务器

    您可将此服务器配置为与地理位置靠近您的池中的 NTP 服务器同步。本网站您可以获取服务器列表并找到离您最近的服务器。它将与这些服务器保持时间同步。

  2. 服务器上的 NTP 守护进程

    配置每台服务器上的 ntpd 以连接到本地 NTP 服务器。由于您在非常快速、低延迟的 LAN 上维护本地 NTP 服务器,因此偏差将很小。

使用此实现,您的服务器上的时间将彼此同步。

答案2

正如其他人指出的那样,从公共服务器同步的本地 NTP 服务器并为其他服务器提供低延迟服务可能是您能做的最好的事情。

如果您能看到天空,您可以从 GPS 获得非常精确的外部同步,但这通常不切实际。

我怀疑如果您遇到问题,则您遇到了以下两个问题之一:要么您正在轮询 NTP(例如来自 cron 的 ntpdate)而不是运行本地守护程序,要么您的问题实际上与测试和网络中的延迟有关,并且您的服务器可能比您想象的同步得更好。

答案3

  1. 您是否考虑过从 NTP 转向 PTP? http://en.wikipedia.org/wiki/Precision_Time_Protocol
  2. 如果您无法摆脱 NTP,那么多播可能会有所帮助。 http://doc.ntp.org/4.1.1/confopt.htm

不管怎样,最明显的一点就是要确保时间源的质量。要么将自己的 GPS 接收器和/或原子钟连接到数据中心,要么连接到多个外部 0 层时钟。后期策略有点不确定。你永远不知道互联网上哪种时钟将其作为 0 层提供,它们可以是任何东西,从真正好的时钟到爷爷的滴答声。

ps 用于ntpq -c peers查看您正在连接的时钟的层级。有关调试的更多信息,请参阅http://www.clock.org/ntp/debug.html

相关内容