服务器具有完全相同的时间为什么很重要?


35

我已经读过很多遍了(尽管我现在找不到),数据中心会竭尽全力确保所有服务器都具有完全相同的时间。包括但不限于担心leap秒。

为什么服务器具有相同的时间如此重要?实际的公差是多少?

Answers:


53

安全

通常,时间戳记用于各种身份验证协议中,以帮助防止重播攻击,攻击者可以在其中重用他能够窃取的身份验证令牌(例如,通过嗅探网络)。

例如,Kerberos身份验证正是这样做的。在Windows中使用的Kerberos版本中,默认公差为5分钟。

用于双重身份验证的各种一次性密码协议(例如Google Authenticator,RSA SecurID等)也使用此方法。在这些情况下,公差通常在30至60秒左右。

如果客户端和服务器之间没有时间同步,则无法完成身份验证。(在最新版本的MIT Kerberos中,通过使请求者和KDC确定身份验证期间它们的时钟之间的偏移量,已消除了此限制,但是这些更改发生在Windows Server 2012 R2之后,在Windows中看到它还需要一段时间。版本。但是2FA的某些实现可能总是需要同步时钟。)

管理

使时钟同步可以更轻松地使用不同的系统。例如,如果所有系统都具有相同的时间,则关联来自多个服务器的日志条目要容易得多。在这些情况下,您通常可以使用NTP提供的1秒公差,但是理想情况下,您希望时间尽可能地保持紧密同步。提供更严格的公差的PTP实施起来可能会更加昂贵。


16
+1对日志记录时间戳不同步的分布式系统上的错误情况进行故障排除:再也不会
Mathias R. Jessen 2015年

3
运行NTP守护程序的服务器通常会在0.01秒(几毫秒)内同步。本地Windows NTP同步每天仅检查几次,并且不那么准确。有可用于Windows的NTP客户端,可提供良好的同步。
BillThor

+1为这个答案,因为我只是检查我的系统时间并且我晚了5秒,但是现在我正在使用ntp进行同步,因此最好在问题中添加一个指向ntp.org的链接,以便人们可以检查他们的系统
Freedo

2
make客户机/服务器NFS之间的时钟偏差也使它感到困惑。
Sobrique 2015年

@BillThor您有关Windows时间服务的信息落后了大约十年。自2003R2发行以来,它已经是完整的NTP客户端,并且可以自适应地同步AD域的代理部分。我们在2008R2上看到小于16 ms的典型偏移量,即64Hz系统计时器刻度的极限。我们认为2012+机顶盒的计时功能更好,可以使用更小的刻度间隔。
rmalayter

17

主要是因为它可以关联来自不同设备上的日志的事件。假设发生安全事故,有人通过您的Web服务器访问您的数据库-您希望防火墙,负载均衡器,Web服务器和数据库服务器上的时间戳都匹配,以便可以在每个设备上找到日志与事件有关。理想情况下,您希望一切都在几毫秒之内。而且它需要与实际的外部时间保持同步,这样,如果有必要,您还可以将日志与第三方日志关联起来。


2
此外,如果时间不同步,则诸如ldap和/或kerberos之类的某些安全解决方案将失败。以及一些HA解决方案。
珍妮D说恢复莫妮卡2015年

7

从管理的角度来看,这不仅很重要,而且从应用程序级别相关性来看,使时钟同步也很重要。这取决于解决方案的设计方式,正在运行的应用程序如何获得与可能使用的任何事务的时间戳。我已经看到事务验证失败,因为与在与之交互的其他应用程序相比,应用程序在服务器上运行的偏移量太大(将来大约是20秒)。

同样,如果在例如VMWare ESXi服务器上进行虚拟化,并且VM的时间与虚拟机管理程序的时间不同步,则诸如vmotion之类的操作可能会将VM时钟与虚拟机管理程序重新同步,这又可能导致无法预测的结果如果时差足够大。

我不知道实际的公差是多少,因为我认为这在很大程度上取决于所使用的系统类型,但是我认为通常来说,将数据中心中的服务器彼此之间的偏移时间保持在一秒以内是可以实现的。


6

由于您提到了leap秒,因此应注意它们需要特别困难的处理。

通常是通过注入23:59:60秒来添加它们,如果您要验证分钟和秒字段的时间戳为0-59,这是有问题的。重复23:59:59使其长2秒的替代方法并没有改善多少,因为这会与对时间敏感度降低到每秒一秒的任何东西发生冲突。

Google实际上早就提出了一个不错的解决方案,似乎尚未被广泛采用。他们的解决方案是应用“拖尾”并在一段时间内划分更改,整个过程由NTP服务器管理。他们早在2011年就发布了一个有关该博客的博客,该博客引起了有趣的阅读,并且似乎与此问题相关。


听起来很像某些NTP客户端的转换行为,这种转换已被永久实施。
CVn 2015年

@MichaelKjörling之类的。不同之处在于,通过对时钟进行时间校正来确定时钟错误之后,摆率旨在避免较大的跳变。谷歌所做的是故意向其ntp服务器添加偏移量,提前进行回转,因此永远不会the秒。
凯萨2015年

5

无论何时涉及时间戳,去同步的设备都会产生逻辑不一致性,例如:A向B发送查询,并且B的答复带有比查询更早的时间戳,可能导致A忽略它。


4

我同意以上所有观点。我想提出更多的想法。
一些数据库,例如Cassendra,严重依赖时间戳。这就是它处理并发的方式。

不同的时间戳会完全破坏数据库。


2
最好将其张贴为评论
Dave M

因此,我在一堆CentOS 5.2机器上升级了glibc,并且该更新意外将一半时间设置为MST时区-我们立即遇到了用户随机退出而导致“不活动”的问题。各种各样的小部件和小东西都希望时间是正确的。另外,如果您的时间不正确并且可以自动更正,那么您会发现文件和日志时间戳确实令人迷惑并且来自未来……
Linux的一个书呆子2015年

我希望这对许多分布式数据库都是如此。仅几秒钟的时间戳差异可能足以反转两个操作的顺序。
凯萨2015年
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.