我们有 2 台物理 Hyper-V 服务器,它们之间运行着 8 台虚拟机,每台物理服务器上都有一个在虚拟机中运行的域控制器,所有服务器都是 2008R2
VM PDC 设置为 NTP 并与 time.microsoft.com 同步,其余部分(包括物理服务器)均为 NT5DS。此主 VM PDC 肯定拥有 FSMO,并且 UDP 123 处于活动状态
当我运行 w32tm /query /status 时
我在两个 VM DC 上都获取了 VM IC 时间同步提供程序,我知道这意味着与主机同步。
当我运行 w32tm /resync /rediscover 时
我在日志中收到“由于没有可用的时间数据而未重新同步”和事件 ID 134,对此有什么想法吗?
我还查看了日志,发现了事件 144 和 12
我已按照 MS KB 详细信息设置外部时间源并进行了所有注册表更改,但我认为 DNS 困扰了我?
但是当我在其中一台物理机器上更改时间时,时间就是从这里设置的。也许如果我取消注册它们,然后注册、更新和同步,但我担心会造成更大的问题!
我正在尝试保持 VM 和 Hyper-V 主机之间的时间同步处于启用状态,因为我相信这是我所读到的最佳实践。
感谢您的帮助
我终于让它工作了!这样做的目的是帮助那些刚开始设置域时间的人。
在此示例中,所有服务器、主域控制器 (PDC)、其他域控制器 (DC) 和其他服务器都运行 Windows 2008 R2 并使用 Hyper-V 进行虚拟化。
首先,您将阅读如何在 Hyper-V 中的任何虚拟机上禁用“时间同步集成服务”,但您应该从虚拟 DC 内部操作 Windows 时间服务(w32tm 服务),您不应该禁用它,因为当 VM 重新启动时这会导致问题,应该使用 w32tm 来完成。 http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/19/time-synchronization-in-hyper-v.aspx
您需要找出哪个服务器是 PDC 并运行 FSMO 角色。运行以下命令:netdom query fsmo 结果应该是您的 PDC,这是您进行大部分更改的地方。
确保防火墙上有 UDP123 上的“出站”规则,并且程序是 %SystemRoot%\System32\w32tm.exe,只需浏览到 Windows 目录并找到该 exe 即可
这是注册表更改发生的地方!HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time
确保上述注册表地址配置下的 PDC 的“类型”设置为 NTP,并且所有其他服务器都是 NT5DS,这意味着 NTP 是主服务器!最佳做法是让 PDC 从外部查找时间,并将所有内容同步到该时间。
在所有域控制器(包括 PDC)上运行此程序,它将部分禁用 Windows 时间,因此它不会查看主机时间,这很重要,因为我们是虚拟化的。reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
您可以访问 ntp.orghttp://support.ntp.org/bin/view/Servers/WebHome 站点查找离您最近的服务器来同步您的外部时间。我建议不要使用 Microsoft,因为它们使用率很高,因此可能会出现问题。
以下命令将设置 PDC 以进行外部查看,但也会检查此处定义的注册表设置以进行外部同步(您需要同时执行这两项操作) http://support.microsoft.com/kb/816042
在 PDC 上运行此命令 w32tm /config /manualpeerlist:“0.pool.ntp.org,0x1” /syncfromflags:MANUAL /reliable:yes w32tm /config /update w32tm /resync w32tm /resync /rediscover
在任何服务器上随时运行这 2 个命令,查看它们的来源以及上次更新时间,这些命令将在整个练习中使用,以确保您的 PDC 和其他服务器从正确的位置获取时间 w32tm /query /status w32tm /query /source
然后在除 PDC 之外的所有 DC 上运行此命令,它将使它们查看 PDC 的时间并重新同步到它 w32tm /config /syncfromflags:DOMHIER /update net stop w32time net start w32time w32tm /resync /force
问题:当您运行状态或源查询时,请在更改后给予它们一两分钟的时间,您不应该查看本地 CMOS 时钟,也不应该使用 vm ic 时间同步提供程序作为源。
如果成功,PDC 应该读取您设置的外部站点,并且其他服务器应该将 PDC 作为源
希望这能帮助人们好运!
答案1
@PSaul 基本正确。您不想使用time.microsoft
或time.windows.com
作为拥有 PDC 模拟器 FSMO 角色的域控制器的时间源。作为默认设置,它们被大量使用,由于缺乏本地性而经常变慢,有时甚至不可用。选择离您较近的 NTP 池。
然而,不是禁用 Hyper-V 时间同步集成。某些功能需要此功能,例如在重新启动后或虚拟机从保存状态恢复时重置时间。您要做的就是告诉虚拟化域控制器忽略其 Hyper-V 主机作为时间源。
可以按照如下方式完成:
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
此命令将 Hyper-V 时间源作为 W32Time 的可能源删除。
w32tm /config /syncfromflags:DOMHIER /update
现在告诉 W32Time 在域层次结构中搜索最佳时间源。如果您想为两个域控制器使用外部源,可以使用 @PSaul 发布的命令或来自这里。一般来说,担任 PDC 模拟器角色的域控制器应从外部源同步,而其他域控制器也应从该源同步。
net stop w32time & net start w32time
w32tm /resync /force
重新启动时间服务并强制重新同步。
w32tm /query /source
最后,您应该确认您的域控制器具有正确的时间源。
看看 Ben Armstrong 的精彩博客文章更多细节。
答案2
我终于让它工作了!这样做的目的是帮助那些刚开始设置域时间的人。
在此示例中,所有服务器、主域控制器 (PDC)、其他域控制器 (DC) 和其他服务器都运行 Windows 2008 R2 并使用 Hyper-V 进行虚拟化。
首先,您将阅读如何在 Hyper-V 中的任何虚拟机上禁用“时间同步集成服务”,但您应该从虚拟 DC 内部操作 Windows 时间服务(w32tm 服务),您不应该禁用它,因为当 VM 重新启动时这会导致问题,应该使用 w32tm 来完成。MSDN 信息
您需要找出哪个服务器是 PDC 并运行 FSMO 角色。运行以下命令:netdom query fsmo 结果应该是您的 PDC,这是您进行大部分更改的地方。
确保防火墙上有 UDP123 上的“出站”规则,并且程序%SystemRoot%\System32\w32tm.exe只需浏览到 windows 目录并找到时间的 exe
这就是注册表更改发生的地方!
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time
确保上述注册表地址中配置下的 PDC 设置为网络时间协议 (NTP)为了 ”类型“并且所有其他服务器都是 NT5DS,这意味着 NTP 是爸爸!最佳做法是让 PDC 从外部查找时间并将所有内容同步到它。
在所有域控制器(包括 PDC)上运行此程序,它将部分禁用 Windows 时间,因此它不会查看主机时间,这很重要,因为我们是虚拟的。
reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0
您可以前往ntp.org站点查找离您最近的服务器来同步您的外部时间。我建议不要使用 Microsoft,因为它们使用率很高,因此可能会出现问题。
下面的命令将设置 PDC 以进行外部查看,但也会检查此处定义的注册表设置以进行外部同步(您需要同时执行这两项操作)微软知识库 816042
运行配电板
w32tm /config /manualpeerlist:"0.pool.ntp.org,0x1" /syncfromflags:MANUAL /reliable:yes
w32tm /config /update
w32tm /resync
w32tm /resync /rediscover
在任何服务器上随时运行这 2 个命令,查看它们的来源以及上次更新时间,这些命令将在整个练习中使用,以确保您的 PDC 和其他服务器从正确的位置获取时间
w32tm /query /status
w32tm /query /source
然后运行除 PDC 之外的所有 DC,它将使他们查看 PDC 的时间并重新同步到它
w32tm /config /syncfromflags:DOMHIER /update
net stop w32time
net start w32time
w32tm /resync /force
问题:当您运行状态或源查询时,请在更改后给他们一两分钟的时间,您不应该查看本地 CMOS 时钟你不应该使用VM IC 时间同步提供商也可作为来源。
如果成功,PDC 应该读取您设置的外部站点,并且其他服务器应该将 PDC 作为源
希望这能帮助人们好运!
答案3
我会建议:
- 不启用 HyperV 主机和客户虚拟机之间的时间同步——尤其是对于 DC。PDC 角色持有者应通过 NTP 从几个良好的时间源进行更新。主机的时钟也可以通过 NTP 更新,但您希望 PDC 成为其他 DC 和成员服务器的“主服务器”。(至少对于 VMwre 来说,我认为对于 HyperV 也是如此)
- 确保 UDP 端口 123 已打开以允许出站流量。
- 您可以解析 NTP 服务器的 FQDN(您可以 PING 它们吗?)
- 所有其他 DC 和成员机器都应自动更新。
不要只使用 time.windows.com 或 time.microsoft.com,请使用 *.pool.ntp.org 服务器之一。我使用 north-america.pool.ntp.org 或 ca.north-america.pool.ntp.org — 越近越好。您可以检查:http://www.pool.ntp.org/查找距离您较近的服务器。
然后运行如下命令:
w32tm /config /manualpeerlist:"north-america.pool.ntp.org 0.pool.ntp.org" /syncfromflags:MANUAL /update /reliable:YES
(添加您想要的任何 NTP 服务器。在加拿大我也使用 time.nrc.ca)
其次是:
net stop w32time
net start w32time
您可以使用以下方式检查 Peers:
w32tm /query /peers
检查系统日志以查看是否正在更新。您应该能够将时钟调快 1 分钟,重新启动 w32time 服务,它将在 30 秒内更新。[在 AD 域中,时间偏差小于 5 分钟是可以接受的]
答案4
正如其他人所建议的,绝对不要将硬件时间从主机同步到客户机。您还应该仅从拥有林根 PDC 仿真器角色的域控制器与外部 NTP 服务器同步。如果您的林根 PDC 仿真器角色域控制器未同步,则依赖它的 DC 将遇到问题。
您可能还想尝试以下修复程序:
即使在 Windows Server 2008 或 Windows Server 2008 R2 中成功启动 W32Time 服务,也不会执行时间同步
http://support.microsoft.com/kb/2493006
如果您对 w32tm 使用 /verbose 标志,您可能会发现它更有帮助:
w32tm /query /status /verbose /computer:dcname
附加信息:
“对于配置为域控制器的虚拟机,建议您禁用主机系统与充当域控制器的客户操作系统之间的时间同步。这使您的客户域控制器能够从域层次结构同步时间。”
“要禁用 Hyper-V 时间同步提供程序,请关闭虚拟机并清除集成服务下的时间同步复选框。”