如何在一秒钟内在ESXi Windows虚拟机上同步时间?


12

我是一名开发人员,我们使用的是Quartz.Net,它是广泛使用的带有SQL后备存储的调度库,用于运行作业服务器群集(ESXI群集上的VM)。

Quartz.Net 要求在作业服务器实例之间同步时间,并建议使用NTP。

时钟之间必须相差一秒。

我们的系统管理员使用Windows NTP与域控制器同步时间。VM与ESXI主机的同步已关闭。

他们坚持认为“秒内”是不正确的要求,并且没有硬件GPS同步设备也无法满足。他们的SLA和监控级别为“ 3分钟内”。

我们正在经历周期性(2-3个月一次)的Quartz实例不同步行为,这与时间不同步一致。

  1. 我们要求“秒内”是正确的还是我们需要完全放弃Quartz?
  2. 如果是,建议对我们的设置进行哪些更改?

11
即使在虚拟服务器(众所周知,它们本身的时间稳定性很差)上,同步到一秒钟也没什么。三分钟?!开怀大笑。您不能以这种方式运行网络。
Lightness Races in Orbit

Answers:


20

这是2018年。Windows能够按照MIFID II法规要求在2毫秒左右的时间内保持服务器同步。因此,您的问题不是问题。

我们的系统管理员使用Windows NTP与域控制器同步时间。VM与ESXI主机的同步已关闭。

为什么?主机(作为硬件)可以更好地处理此问题,而您则要少得多。您的系统管理员朝自己的脚开枪,然后抱怨自己在流血。

他们坚持认为“秒内”是不正确的要求,并且没有硬件GPS同步设备也无法满足。他们的SLA和监控级别为“ 3分钟内”。

旧-古-Windows在该时间范围内同步,因为Kerberos票证的有效期为5分钟。

但这就是我所说的2018年。如今,金融业对残酷的要求很高,我认为自2012年以来,MS一直在处理这些要求。2016年全面生效。互联网上的毫秒精度是一个已解决的问题-实际上在50年前就已经解决了,以实现良好的连接。NTP可以处理它。如果您想减少通信量(即,使自己成为第3层NTP时间源),则可能必须摆放一个便宜的硬件盒,但这又不算昂贵。

我们要求“秒内”是正确的还是我们需要完全放弃Quartz?

您需要对偶尔的时间问题进行编程-就像对硬件一样。但是“秒内”是一个要求的玩笑-在正常情况下满足是微不足道的。

一些参考:

https://docs.microsoft.com/zh-CN/windows-server/networking/windows-time-service/accurate-time

政府法规,例如:美国FINRA的精度为50毫秒,欧盟为1毫秒ESMA(MiFID II)。

那里有很多细节和说明。如果您必须解决此问题,那么实际上这是一个了不起的阅读。您可能需要升级虚拟机监控程序-他们谈论有关Hyper-V的所有信息。VMWare应该能够执行相同的操作,但是不能确定您的版本多旧。


FWIW,[英国]金融行业的MiFID II合规性非常(银行宁愿支付微不足道的罚款,也不愿为所有这些烦恼而烦恼),但是从技术上讲,您当然是正确的。
Lightness Races Orbit

这与合规性无关,而与合规性有关。MS很早以前就解决了。这样,OP谈论区域笑话的“ 3分钟准确”。
TomTom

我同意; 这只是一旁。
Lightness Races Orbit

2
我支持NTP的速度还不够快,但是VMware不建议使用集成服务来同步时间,在大多数(尽管不是全部)情况下,常规NTP可以做得更好,更快。
HoD

由于您担心服务器之间的相对时间,因此可以使用NTP将它们与网络交换机同步,这些交换机又与ISP同步-不需要额外的硬件。
grahamj42 '18

6

我们要求“秒内”是正确的还是我们需要完全放弃Quartz?

有很多非常充分的理由说明各种应用程序堆栈需要严格的时间控制,而Quartz要求的绝非同寻常。

如果是,建议对我们的设置进行哪些更改?

最好的选择是使系统的每个部分都使用NTP,并将它们指向同一对NTP服务器。因此,ESXi主机和在其上运行的VM均使用相同的NTP源,并且对于所涉及的其他所有源均相同。这样,即使NTP服务器处于“关闭时间”,那么系统中至少每个部分都是最新的。


4

https://docs.microsoft.com/zh-CN/windows-server/networking/windows-time-service/support-boundary

对Windows 8.1和2012 R2(或更早版本)的高精度支持

Windows的早期版本(Windows 10 1607或Windows Server 2016 1607之前的版本)不能保证高度准确的时间。这些系统上的Windows时间服务:

  • 提供必要的时间准确性,以满足Kerberos版本5身份验证要求

  • 为加入通用Active Directory林的Windows客户端和服务器提供大致准确的时间

在这些操作系统上,更严格的精度要求超出了Windows时间服务的设计规范,因此不受支持。

Windows 10和Windows Server 2016

Windows 10和Windows Server 2016中的时间准确性已得到显着提高,同时与旧版Windows保持完全向后NTP兼容性。在正确的操作条件下,运行Windows 10或Windows Server 2016及更高版本的系统可以提供1秒,50ms(毫秒)或1ms的精度。

目标精度:1秒(1秒)

与高精度时间源相比,要使特定目标计算机的精度达到1s:

  • 目标系统必须运行Windows 10,Windows Server 2016。

  • 目标系统必须从时间服务器的NTP层次结构中同步时间,最终达到高度精确的Windows兼容NTP时间源。

  • 上面提到的NTP层次结构中的所有Windows操作系统都必须按照“为高精度配置系统”文档中所述进行配置。

  • 目标和源之间的累计单向网络延迟不得超过100ms。通过在层次结构中从目标开始到源结束的NTP客户端-服务器节点对之间添加单独的单向延迟,可以测量累积的网络延迟。有关更多信息,请查看高精度时间同步文档。

https://docs.microsoft.com/zh-cn/windows-server/networking/windows-time-service/configuring-systems-for-high-accuracy


实际上,我们正在使用Windows 2012R2。似乎是问题的根源(以及与ESXI主机不同步)
Leotsarev

1
@Leotsarev:如果这些是域成员,则不应与VM主机同步。
格雷格·阿斯克
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.