我想在我的本地网络上设置多个 Stratum 2 时间服务器。虚拟机肯定比购买三台 1U 服务器更便宜。这样做会施加什么限制?也就是说,准确性会在多大程度上受到不利影响?
此外,我的直觉是这些本地时间服务器应该驻留在不同的物理机器上,以减轻任何硬件异常。这种直觉正确吗?
编辑 我应该说“虚拟机”并不是指VMware。相反,我指的是虚拟化实例的一般概念。
我想在我的本地网络上设置多个 Stratum 2 时间服务器。虚拟机肯定比购买三台 1U 服务器更便宜。这样做会施加什么限制?也就是说,准确性会在多大程度上受到不利影响?
此外,我的直觉是这些本地时间服务器应该驻留在不同的物理机器上,以减轻任何硬件异常。这种直觉正确吗?
编辑 我应该说“虚拟机”并不是指VMware。相反,我指的是虚拟化实例的一般概念。
一个简单的事实是,VM 内的时钟精度仍然很差。这来自几个地方,但杀手锏是时间漂移不是恒定的;漂移因子随时变化。NTP 是一种内置时钟补偿的协议,但它的设计内置了静态漂移因子。例如,如果一台物理机器每 30 天丢失 12 秒,NTP 可以对此进行补偿并且做得很好。但是,如果这台机器每 30 天会丢失 4 到 70 秒,那么 NTP 就不能很好地跟踪这种变化水平。
NTP 很难在 VM 环境中跟上进度的真正原因是它所看到的本地时钟可以在一分钟内改变其漂移因子。根据它检查其父时间源的频率,它可能会导致主要的漂移因子变化并导致它更频繁地不同步。整个组织中的不同步时间级联。
本地网络的 NTP 是一种影响相对较小的协议,内存占用非常小,并且可以愉快地搭载在您的其他网络基础设施服务器上,例如 DNS 和 DHCP 服务器。一些路由器还可以提供 NTP 功能,因此您可能需要研究一下。
理想情况下,您希望两个独立的服务器位于不同的位置,每个服务器都与一组不同的更高层服务器同步。将两个时间服务器配置为将另一个服务器用作“对等点”也是一个非常好的主意,这将在上游时间源之一出错时对时间服务的影响最小化;会有阶层变化,但至少不会报告不同步。最后,请善待您的上游时间提供者,并在时间确定后配置您的服务器以在轮询之间运行很长时间。这是 'server' 行上的 'maxpoll' 参数,是两次同步尝试之间的秒数。
如果您绝对必须为此使用虚拟机,我会设置不少于三个这样的 NTP 服务器。每个都需要在不同的主机上,如果可能的话,在不同的数据中心。正如我刚刚建议的那样,它们需要不同的时间源并且应该相互对等。然后将所有 NTP 客户端配置为使用所有三个作为父源。确保您的 maxpoll 值足够低,不会在网络外同步数据包和网络上 30 分钟之间超过一个半小时。在任何给定时间,至少三个中的一个很有可能是同步的。对于只能与一个时间主机交谈的客户端,他们只需要忍受偶尔的不同步事件。总体而言,这种情况下的时间质量不会像物理服务器那样精确。
如果我不得不说一下,我会说你在纯 VM 环境中的共识时间可能在 30 到 100 毫秒之内。在纯粹的物理环境中,一旦时间服务器已经启动足够长的时间来解决问题,您的共识时间可能会在 10 毫秒内。
请参阅 vmware 计时文档。在 VM 中运行 NTP 守护程序可能不是一个好主意,尤其是在您需要可靠时间的情况下。
不幸的是,ntp 和虚拟化并不能很好地结合在一起。在大多数情况下,客户端都可以,但是 ntp 服务器(尤其是 str2 及更高版本)通常无法在虚拟服务器上可靠地工作。
我从 xen 和 xen 企业的角度发表评论,但我相信 vmware/kvm 将是一样的。
重新使用不同的服务器,是的,你是对的,理想情况下它们也应该在不同的环境中,这样温度/湿度也不会影响准确性,但至少我不会为此烦恼。也不要忘记无论你做什么,它仍然不如适当的原子钟准确,所以接受这个(非常轻微的)偏差。
在虚拟化环境中运行 NTP,您将很幸运能够达到 20 毫秒的准确度(这就是我们使用 VMware 所做的)。虚拟化时钟偏差很糟糕,尤其是在资源争用的虚拟化环境中。
这取决于您需要多准确。如果您只关心第二个(EG 用于 Web 服务器),只要您没有资源争用,您可能会没事。如果您想要毫秒精度(例如繁忙的数据库、日志服务器、研究项目),那么请忘记虚拟化时间服务器。
NTP 服务器应始终位于物理主机上。您应该至少有 3 个在池中对等(以便一个流氓服务器被池投票否决);如果可能的话,从 GPS 或其他本地 0 层来源获取他们的时间,而不是通过 Internet。