在虚拟机中运行 NTP 服务器有哪些限制?

Jam*_*sen 16 virtualization ntp

我想在本地网络上设置多个 Stratum 2 时间服务器。与购买三台 1U 服务器相比,虚拟机肯定是一种更便宜的方式。这样做会带来什么限制?也就是说,准确性会在多大程度上受到不利影响?

此外,我的直觉是这些本地时间服务器应该驻留在不同的物理机器上,以减轻任何硬件异常。这种直觉是否正确?

编辑 我应该说“虚拟机”我并不是特别VMware。相反,我指的是虚拟化实例的一般概念。

sys*_*138 20

一个简单的事实是,VM 内的时钟精度仍然非常糟糕。这来自几个点,但致命的是时间漂移不是恒定的;漂移因子随时变化。NTP 是一种内置时钟补偿的协议,但它的设计内置了静态漂移因子。例如,如果一台物理机每 30 天损失 12 秒,NTP 可以对此进行补偿并且做得很好。但是,如果这台机器每 30 天会丢失 4 到 70 秒,那么 NTP 就不太擅长跟踪这种程度的变化。

使 NTP 在 VM 环境中保持同步的真正原因是,它看到的本地时钟可以在一分钟内改变其漂移系数。根据它检查其父时间源的频率,它可能会导致主要的漂移因素变化并导致它更频繁地不同步。整个组织中的不同步时间级联。

本地网络的 NTP 是一种影响相对较小的协议,内存占用非常小,并且可以愉快地搭载在您的其他网络基础架构服务器上,例如您的 DNS 和 DHCP 服务器。某些路由器还可以提供 NTP 功能,因此您可能需要研究一下。

理想情况下,您需要位于不同位置的两个独立服务器,每个服务器都与一组不同的更高层服务器同步。将两个时间服务器配置为使用另一台服务器作为“对等方”也是一个很好的主意,如果上游时间源之一出错,这将最大限度地减少对时间服务的影响;会发生层级变化,但至少不会报告不同步。最后,善待你的上游时间提供者,并在时间确定后配置你的服务器在轮询之间运行很长时间。这是“服务器”行上的“maxpoll”参数,是同步尝试之间以秒为单位的 2 次幂。

如果您绝对必须为此使用虚拟机,我会设置不少于三个这样的 NTP 服务器。每个都需要在不同的主机上,如果可能的话,在不同的数据中心。正如我刚刚建议的那样,他们需要不同的时间源,并且应该相互对等。然后将所有 NTP 客户端配置为使用所有三个作为父源。确保您的 maxpoll 值足够低,在网络外同步数据包和网络上 30 分钟之间的同步数据包之间不会超过一个半小时。在任何给定时间,三者中至少有一个是同步的。对于只能与一位时间主持人交谈的客户,他们只需要忍受偶尔出现的不同步事件。总体而言,这种情况下的时间质量不会像物理服务器那样准确。

如果我不得不说,我会说你在纯 VM 环境中的共识时间可能会在,哦,30 到 100 毫秒之内。在纯粹的物理环境中,一旦服务器启动足够长的时间来解决,您的共识时间可能会在 10 毫秒以内。


Pau*_*ear 12

现在是 2023 年,这个问题的所有早期答案现在都是错误的(至少从 2016 年底以来就是如此),至少就 Linux VM 而言是这样。[以下建议可能不适用于 Windows VM。]

如果您在 2023 年或之后阅读本文,请不要相信 2013 年或更早的答案中有关最大 20-100 毫秒准确度的说法。现代虚拟机中的时间同步在 LAN 上可以实现低于 1 毫秒的精度,在消费级 Internet 连接上可以达到接近 1 毫秒的精度。

以下 ServerFault 问题包含更多最新讨论:

这里有一些说明性的偏移图(按时间顺序排列)来支持我的主张。在某些情况下,我仍然拥有原始日志文件,我非常乐意将其提供给任何想要自行调查的人。请注意每个实例中图表的比例:

  1. ntpd2016 年底,在 KVM 管理程序(在某种 Intel Xeon 上)下的 OpenStack 私有云中 运行的虚拟机:偏移-kvm
  2. ntpd2020 年中期在独立 KVM 主机(Intel Celeron 1037U 上)上 运行的虚拟机:偏移-kvm-赛扬
  3. 2021 年末 运行的许多 AWS t3a.micro(AMD) 实例:chronyd偏移-aws-t3a
  4. 2021 年末 运行的许多 AWS t4g.micro(ARM) 实例:chronyd偏移-aws-t4g
  5. 2022 年初 运行的一些 Azure Standard_B1s(Intel) 实例:chronyd偏移-azure-b1s
  6. chronyd2022 年末在 AWS ECS/Fargate (Intel) 中 运行的大量容器:偏移-fargate


Zor*_*che 11

请参阅 vmware 计时文档。在 VM 中运行 NTP 守护程序可能不是一个好主意,尤其是在您需要可靠时间的情况下。

  • 哈哈 - “特别是如果你需要可靠的时间” (2认同)

ryt*_*tis 6

不幸的是,ntp 和虚拟化不能很好地结合在一起。客户端在大多数情况下都可以,但是 ntp 服务器(esp str2 及更高版本)通常无法在虚拟服务器上可靠地工作。

我是从 xen 和 xen 企业的角度进行评论的,但我相信 vmware/kvm 将是一样的。

关于不同的服务器,是的,你是对的,理想情况下它们也应该在不同的环境中,这样温度/湿度也不会影响准确性,但至少我不介意。也不要忘记,无论你做什么,它仍然不如适当的原子钟准确,所以接受这个(非常轻微的)偏差。