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

我想让一组服务器拥有完全相同的时间。 所有正在使用UTC时区。

目前使用NTP,我仍然看到他们似乎每个10-20毫秒。

什么是最好的方式让他们每一个确切的时间?

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

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

  1. 本地NTP服务器

    您可以将此服务器configuration为与地理上靠近您的池上的NTP服务器同步。 在这个网站上,你可以得到一个服务器列表,并得到一个靠近你。 它会保持与他们同步的时间。

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

    configuration每台服务器上的ntpd以连接到本地NTP服务器。 当您在最后一个低延迟的局域网上维护本地NTP服务器时,偏差将会很小。

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

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

如果你能看到天空,你可以从GPS获得一个非常准确的外部同步,但这往往是不实际的。

我怀疑如果你遇到了问题,你有两个问题之一:要么你正在轮询NTP(例如从cron的ntpdate),而不是运行本地守护进程,或者你的问题实际上是testing和networking延迟,您的服务器可能会比您想象的更好地同步。

  1. 你有没有考虑过从NTP转移到PTP? http://en.wikipedia.org/wiki/Precision_Time_Protocol
  2. 如果你不能离开NTP,也许多播会有帮助。 http://doc.ntp.org/4.1.1/confopt.htm

无论哪种方式,一个明显的事情得到正确的是质量好的时间源。 将自己的GPS接收器和/或primefaces钟送到您的数据中心,或者连接到多个外部的0级时钟。 后来的策略是有点不确定的。 你永远不知道互联网上的什么时钟将它提供为0层,它们可以是从真正的时钟到爷爷的嘀嗒响。

ps使用ntpq -c peers来查看连接到的时钟的层级。 有关debugging的更多信息,请参见http://www.clock.org/ntp/debug.html