我们在多台物理服务器(托管)上有一些 Windows Server 2008 VMware 实例,以及一个需要在服务器实例之间同步时间的应用程序。
显然,VMware 在这方面存在问题,我们确实从未让它变得更好,我们已将服务器设置为每分钟轮询一次 NTP 更新,这缓解了这个问题(以一种相当粗糙的方式)。但每隔一段时间,更新就会失败(因为已经有太多的漂移),然后 Windows 永远不会再进行 NTP 更新,这最终导致服务器之间的漂移太远,以至于我们的应用程序崩溃,我们注意到了。
我们正在考虑将主机更改为大致相同设置的 Xen 服务器,我预计会出现类似的问题。
- 有人能告诉我,对于客户机来说,Xen 是否存在与 VMware 相同的时间漂移问题吗?
- 有人能告诉我与外部 NTP 服务器同步以保持同步的最佳 Windows 服务器设置是什么吗:
- 您建议多久同步一次?(假设每分钟)
- 您是否建议运行我们自己的 NTP 服务器 - 即使它必须在虚拟实例上?(假设不是)
- 有没有什么办法可以告诉 Windows 与 NTP 服务器同步,无论时差是多少?
- 还有其他建议可以让 Windows 服务器时间保持同步吗?
我已经熟悉了[http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1318] 并且它有帮助,但并非完全有效(见上文)。
非常感谢!
答案1
间歇性地使用 NTP(即使每分钟一次)也不会有太大帮助。NTP 旨在进行持续更新/调整,不适用于离散时钟跳变。
如果你安装了合适的 NTP 守护进程,那么你会更幸运。我发现http://www.meinberg.de/english/sw/ntp.htm(Windows 版本的“标准”NTPd 实现)在运行 Windows Server 2003 和 2008 的虚拟机中可靠。
但有四件事需要注意:
确保 VMWare 时间同步方法已关闭,或者 NTP 正在运行,否则它们和 NTP 会相互冲突。上面链接的 NTP 版本的安装程序将关闭客户机中发现的常用时间同步软件,但它无法关闭 VMWare,因此您需要自己执行此操作。
确保已
tinker panic 0
在 NTPd 配置文件顶部指定。如果时钟漂移突然发生变化,这将阻止 NTP 服务放弃,这种情况在虚拟机中很常见,因为主机上的负载会随时间变化。使用虚拟机的本地时间源以获得更好的本地精度,并将此本地源与 .pool.ntp.org 或类似源同步,而不是直接将虚拟机与外界同步。这样,如果您的外部网络访问中断,虚拟机仍然有一个比其自身更可靠的时钟源可以同步(并且您对公共时间服务器更加友善)。您可以使用 VMWare 主机作为此本地时间源,但我倾向于让一台机器充当外部网络网关并让它也执行此工作。
确保没有将虚拟机的本地时钟列为时间源,即使作为最后的后备手段。
答案2
我不知道时间同步问题是否是 VMWare 问题,更多的是虚拟化问题。您的主机和 VC 是否已同步 NTP?如果已同步,您是否已在 vmtools 中打开时间同步选项并在客户机中关闭 NTP?我们遇到了时间问题,但并未发现。
答案3
如果时间对于您的应用程序至关重要,那么您应该考虑使用基于 GPS 的时间服务器直接访问源。这里有一家提供解决方案的公司