在多个Azure VM上同步时钟

时间:2015-09-12 18:49:51

标签: azure azure-virtual-machine

我需要编写测量消息传输延迟的负载测试。为了模拟大量的同时使用而不会在一个盒子上遇到线程争用问题,我在Azure中启动了多个服务器。

当我收到我的第一个结果时,我有点震惊地看到结果表明邮件是在收到之前收到的。我立刻意识到,虽然我有一个隐含的假设,即所有的VM都会将它们的时钟同步到几毫秒内,但事实显然并非如此。 我花了几个小时用谷歌搜索方法来解决这个问题,而且我没有到达任何地方。一种想法是让每个VM使用类似于此NetRemoteTOD的技术使用NetRemoteTOD()在中央服务器上查询时间,然后建立每台机器校正因子以添加到从本地机器测量的时间时钟。但是,当我尝试运行该方法时,我收到错误2184,“服务尚未启动”我已经验证RPC服务和Windows时间服务都在客户端和目标计算机上运行,​​我有没有成功找到任何指示其他服务需要运行的信息(或者即使错误确实意味着它的意思)。 (在我的开发桌面和公司网络上的服务器之间运行时,我也会遇到同样的错误。但是,我可以将它成功运行到公司网络上的PDC - 但我在Azure上找不到PDC,因为这两台机器都没有是域名的一部分。)

那么,是否有人知道需要启动什么服务才能获得NetRemoteTOD(或windows NET TIME命令,它依赖于NetRemoteTOD)。或者,是否有人建议使用其他技术来获取Azure中多个VM的一致时间参考? (注意,我不一定需要同步它们的时钟,我只需要一种方法来建立一致的校正因子来引用公共源的时间。还要注意,我需要亚秒精度 - 可能大约100毫秒。 )基本上,我只需要一个windows函数或shell命令,这将使我有时间在给定的远程服务器上达到亚秒精度。

提前致谢。 PS。 Azure服务器正在运行Server 2008 R2 SP1

0 个答案:

没有答案