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

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

我是一名开发人员,我们正在使用 Quartz.Net,这是一个广泛使用的调度库,带有 SQL 后备存储来运行作业服务器集群(ESXI 集群上的虚拟机)。

石英网需要该时间将在作业服务器实例之间同步,并建议使用 NTP 进行同步。

两个时钟之间的差异必须在一秒之内。

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

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

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

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

答案1

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

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

为什么?主机可以更好地处理这个问题(作为硬件),而你的硬件要少得多。你的系统管理员搬起石头砸自己的脚,然后抱怨他们正在流血。

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

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

但正如我所说,现在是 2018 年。如今金融行业有相当严格的要求,我认为微软自 2012 年以来一直在处理这个问题。2016 年全面实施了这一计划。互联网上的毫秒精度是一个已解决的问题 - 实际上 50 年前就解决了,对于一个良好的连接来说。NTP 可以处理它。如果您想减少流量(即制作自己的 3 级 NTP 时间源),您可能需要安装一个便宜的硬件盒,但这也不贵。

我们要求“在一秒内”是否正确,或者我们需要完全放弃 Quartz?

您需要针对偶尔出现的时间问题进行编程 - 就像处理硬件一样。但“在一秒内”的要求简直是笑话 - 在正常情况下很容易满足。

一些参考资料:

https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/accurate-time

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

那里有很多细节和说明。如果你必须解决这个问题,这实际上是一篇很棒的文章。你可能必须升级你的虚拟机管理程序 - 他们谈论的都是 Hyper-V。VMWare 应该可以做同样的事情,但不确定你的版本有多旧。

答案2

我们要求“在一秒内”是否正确,或者我们需要完全放弃 Quartz?

各种应用程序堆栈需要严格的时间控制有很多很好的理由,并且 Quartz 的要求也很常见。

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

最好的办法是让系统的每个部分都使用 NTP,并将它们指向同一对 NTP 服务器。这样,ESXi 主机和在其上运行的虚拟机都使用相同的 NTP 源,其他相关内容也是如此。这样,即使 NTP 服务器“不准时”,至少系统的每个部分都可以相互保持最新状态。

答案3

https://docs.microsoft.com/en-us/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秒(1s)

与高精度时间源相比,为了使特定目标机器实现 1 秒的精度,需要执行以下操作:

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

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

  • 上述 NTP 层次结构中的所有 Windows 操作系统都必须按照配置系统以实现高精度文档中所述进行配置。

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

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

相关内容