我想在本地networking上设置几个Stratum 2时间服务器。 与购买三个1U服务器相比,虚拟机肯定是一个更便宜的方法。 这样做会有什么限制? 也就是说,精度会受到多大程度的影响?
另外,我的直觉是,这些本地时间服务器应该驻留在不同的物理机器上,以减轻任何硬件违规。 这个直觉是正确的吗?
编辑我应该说,“虚拟机”我并不特指 VMware 。 相反,我的意思是虚拟化实例的一般概念。
简单的事实是,虚拟机内的时钟精度仍然非常糟糕。 这是来自几个地方,但凶手是时间漂移不是恒定的; 漂移因子每时每刻都在变化。 NTP是内置有时钟补偿的协议,但内置了静态漂移因子。例如,如果一台物理机每30天丢失12秒,NTP就可以对此进行补偿。 但是如果这台机器每30天可能会损失4到70秒,那么NTP就不太适合跟踪这个变化的水平。
对于NTP来说,在虚拟机环境中保持真正的难度在于,它看到的本地时钟可以在一分钟内改变它的漂移因子。 根据检查其母时间源的频率,可能导致主要的漂移因素变化,并导致其更频繁地失去同步。 整个组织内的不同步时间级联。
本地networking的NTP是一个影响相对较小的协议,只占用很less的内存,并且可以轻松地在您的其他networking基础架构服务器(如DNS和DHCP服务器)上捎带。 一些路由器也可以提供NTPfunction,所以你可能想看看。
理想情况下,您需要两个独立的服务器位于不同的位置,每个服务器与一组不同的高层服务器同步。 这也将是一个非常好的想法,这两个时间服务器被configuration为使用其他服务器作为“同行”,这将最大限度地减less时间服务的影响,如果其中一个上游时间源错误; 会有一个阶层的变化,但至less它不会报告不同步。 最后,对于你的上游时间提供商来说很好,并且一旦时间确定后,你的服务器就可以在很长一段时间内进行投票了。 这是“服务器”行上的“maxpoll”参数,在同步尝试之间是两秒的功率。
如果你绝对不得不使用虚拟机,我会设置不less于三个这样的NTP服务器。 每个需要在不同的主机上,如果可能的话,在不同的数据中心。 正如我刚才所build议的那样,他们需要不同的时间来源,并且应该彼此同行。 然后configuration所有的NTP客户端使用全部三个作为父源。 请确保您的maxpoll值足够低,以便在同步数据包脱离networking和networking30分钟之间不超过一个半小时。 在任何时候,三者中至less有一个会同步。 对于只能和一个时间主持人交谈的客户,他们只能忍受偶尔的不同步事件。 总的来说,在这种情况下,时间质量不会像物理服务器那样精确。
如果我不得不停球,我认为你在纯虚拟环境下的共识时间可能在30到100毫秒之内。 在纯粹的物理环境中,一旦服务器已经足够长的时间来解决问题,你的共识时间可能会在10ms内。
请参阅vmware计时文档 。 在虚拟机中运行NTP守护进程可能不是一个好主意,特别是如果您需要可靠的时间。
不幸的是,ntp和虚拟化并不能很好地结合在一起。 客户端在大多数情况下都可以,但是ntp服务器(esp str2及以上版本)在虚拟服务器上通常无法可靠运行。
我从xen和xen企业的angular度评论,但是我相信vmware / kvm将会是一样的。
不同的服务器,是的,你是对的,理想情况下,他们也应该在不同的环境,所以温度/湿度也不影响准确性,但至less我不打扰。 也不要忘记,无论你做什么,它仍然不如primefaces钟准确,所以只要接受这个(非常轻微)的偏差。
在虚拟化环境中运行NTP,您将会获得20ms的准确性(这正是我们使用VMware所做的)。 虚拟时钟偏差很差,特别是在资源争用的虚拟化环境中。
这取决于你需要多准确。 如果你只关心第二个(Web服务器的EG),那么只要你没有资源争夺,你可能会好起来的。 如果你想精确到毫秒(例如繁忙的数据库,日志服务器,研究项目),那么就忘了虚拟时间服务器。
NTP服务器应该始终在物理主机上。 你应该至less有三个人在一个池中窥视(这样一个stream氓服务器被池中的投票拒绝); 并且如果可能的话,从GPS或其他本地0级源而不是通过互联网获得他们的时间。