直到最近,我们还有一个由大约 20 台小型 Windows 服务器(现在都已虚拟化)组成的小型集群。它们都被配置为与本地时间服务器同步。它位于我们自己 DC 的 1Gb 子网上。我从来没有让它们彼此相距不到 100 毫秒,我认为这是一个非常大的差异。
这是正常值吗?运行在 1Gb 网络上的机器之间的时间差的现实期望是多少,所有机器都连接到同一时间服务器,并且经常更新,比如每 5 分钟一次?
我想知道这是因为在分布式应用程序中设置超时和其他参数需要考虑这种差异。
Chr*_*s S 14
NTP 通常在“合理”网络上徘徊在 <10-20 毫秒范围内。但是,如果您使用的是 Windows 内置的 NTP 客户端,那就是另一回事了。Windows 内置客户端仅用于保持 Kerberos 的时间同步,即 5 分钟。他们无意保持非常准确的时间;所以 100ms 做得很好。
如果您需要比 100 毫秒更准确的时间,请安装实际的 NTP 客户端,例如ISC 参考 NTPd的Meinberg 二进制文件。
如果您需要超精确时间,您应该查看精确时间协议 (PTP)。请注意,PTP 比 NTP 复杂得多,因此除非您需要超精确的时间戳或类似的东西,否则强烈建议使用 NTP。
NTP 应该能够比 100ms 做得更好
虚拟机因具有奇怪的时间同步问题而臭名昭著。
您没有提到您的虚拟化环境,但请检查并确保所有管理程序也是 NTP 同步的。(通常,来宾 VM 机器最好从其主机管理程序获取时钟。)
请参阅 NTP 文档中的“已知问题”——它提供了更多详细信息。
http://support.ntp.org/bin/view/Support/KnownOsIssues#Section_9.2.2。
请参阅 VMware 的这篇论文,了解有关 Windows 硬件上的一般计时问题以及虚拟机中计时的其他问题的详细信息:
http://www.vmware.com/files/pdf/Timekeeping-In-VirtualMachines.pdf