Geo*_*rge 7 active-directory ntp time-synchronization windows-server-2012
我有一个带有两个 DC 的 Active Directory 域。林/域中的第一个 DC 是 Server 2012,第二个是 2008 R2。第一个 DC 担任 PDC 模拟器角色。
我偶尔会收到来自Time-Service源的警告,事件 ID 50:
The time service detected a time difference of greater than %1 milliseconds for %2 seconds. The time difference might be caused by synchronization with low-accuracy time sources or by suboptimal network conditions. The time service is no longer synchronized and cannot provide the time to other clients or update the system clock. When a valid time stamp is received from a time service provider, the time service will correct itself.
Run Code Online (Sandbox Code Playgroud)
域中的时间同步配置了第二个 DC 以使用该/syncfromflags:DOMHIER标志进行同步。第一个 DC 配置为使用/syncfromflags:MANUAL /reliable:YES,来自由许多基于英国的第 2 层服务器组成的对等列表同步时间,例如ntp2d.mcc.ac.uk。
我很困惑为什么会收到此事件警告。这意味着我的 PDC 仿真器无法将时间与据称可靠的外部时间源同步,并且它引用了 900 秒 >5 秒的时差。还值得一提的是,我曾经使用过来自 ntp.org 的英国池,但我会更频繁地收到警告。由于更新到一些英国的学术时间服务器,它似乎更可靠。
有更多经验的人能否对此有所了解 - 也许这纯粹是短暂的?我应该无视警告吗?我的配置合理吗?
编辑:
我应该补充一点,DC 是虚拟的,并且安装在两个独立的 VMware ESXi/vSphere 物理主机上。
我还可以确认,根据 MDMarra 的评论和最佳实践,VMware 时间同步已禁用,因为:c:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe timesync status返回Disabled。
编辑 2
出现了一些奇怪的新问题。我注意到一个模式。最初,事件 ID 50 警告将在每天下午 1230 点左右发生。这很有趣,因为我们的 veeam 备份发生在中午 12 点。
由于我进行了此处讨论的更改,因此我现在收到事件 ID 51 而不是 50。新警告说:
The time sample received from peer server.ac.uk differs from the local time by -40 seconds
Run Code Online (Sandbox Code Playgroud)
(或大约 40 秒)。这已经连续两天发生了。现在我更糊涂了。显然,在我手动干预之前,时间永远不会更新。
该问题似乎与虚拟化和 veeam 有关。当 veeam 备份 PDCe 时,可能会发生一些事情。有什么建议?
更新和总结
msemack 下面的优秀资源列表(已接受的答案)提供了足够的信息来正确配置域中的时间服务。对于希望验证其配置的任何未来人员来说,这应该是第一个呼叫端口。
我通过调整 VMware 时间同步设置解决了最后一个“40 秒跳跃”问题(没有更多警告),如此处的 veeam 知识库文章中所述:http : //www.veeam.com/kb1202
在任何情况下,如果未来的读者使用 ESXi,无论是否使用 veeam,此处的资源都是有关时间同步主题的极好信息来源,并且 msemack 的回答尤其宝贵。
myr*_*ack 20
这是我为 Windows 域时间同步推荐的配置,由多篇 Microsoft TechNet 文章和博客文章拼凑而成。
如果您的服务器已虚拟化,请不要使用任何 VMware 工具时间同步功能。让 Windows 时间服务 (w32time) 完成它的工作。 VMware 甚至这么说。 我认为 Hyper-V 也是如此。此外,如果您同时使用 VM 工具和Windows 时间服务来尝试管理系统时钟,您最终可能会遇到“拔河”情况,您的时钟会一直跳来跳去,永远不会准确。
您的主域控制器模拟器应该手动配置为与多个外部 NTP 服务器同步(四个是一个很好的数字)。使用多个 NTP 源可提供冗余并作为健全性检查,以防一台服务器开始发送错误的时间数据(以前发生过这种情况)。 Active Directory 假定您的 PDCe 是您网络的中央权威时间源。您域中的其他所有内容都应从 PDCe(包括其他域控制器)同步。
我建议您的 PDCe 是物理服务器(如果可能)。其他每台服务器都可以是 VM。我觉得 PDCe 作为物理服务器更舒服,原因有二:
3a. 物理服务器不太容易出现时间漂移。 VM 时间漂移是一个有据可查的现象。虚拟化服务器的时钟每天可能会漂移几分钟。不是时间源的好选择!(请注意,即使在物理服务器上,如果没有外部源,实时时钟仍会每天漂移约 2 秒。这就是您需要 NTP 的原因。)
3b. 我知道物理服务器的日期/时间在冷启动后会正确显示。几年前我遇到过这样的情况,在服务器机房完全断电时,VM 将它们的时间设置为 UTC 而不是本地时区。我认为他们从 ESX 主机(在 UTC 中)提取时间并且没有正确调整时区。这引起了服务无法启动的各种乐趣。不得不手动更正时间并重新启动每个人。
如果您的 PDCe 当前是 VM 并且您有可用的物理域控制器,则通过.
Microsoft(和其他公司)建议您使用 Stratum 2 或 Stratum 3 NTP 服务器作为 PDCe 的时间源。
虽然存在公共 Stratum 1 服务器,但它们的数量有限,而且它们经常过载。在您并不真正需要它时使用 Stratum 1 服务器作为时间源会让您成为一个混蛋。(是的,有些人确实需要 Stratum 1。您可能不是其中之一。如果您真的想使用 Stratum 1 源,请为您的本地网络购买 GPS 时钟。)
您的所有外部 NTP 源都应位于同一层中。 假设您有一个 Stratum 2 源和几个 Stratum 3 源。Windows 时间服务将支持 Stratum 2 源。您的 PDCe 将成为 Stratum 3 服务器。w32time 将忽略 Stratum 3 服务器(因为它们并不比您的 PDCe 好)。Windows 不会让您的服务器在没有人工干预(例如重新启动时间服务)的情况下降级到更高/更差的层次。因此,如果您的 Stratum 2 源离线,您将无法进行任何后备。
因为 Windows 时间服务对时间源的层很挑剔,所以我不建议使用 pool.ntp.org(至少对于 PDCe不推荐)。无法保证您从池中获得的服务器的层级。
相反,我建议您从ntp.org 列表中选择四台 Stratum 2 服务器。尝试选择物理上靠近您的那些(网络延迟会损害 NTP)。验证服务器仍然有效且活动(此列表会随着时间的推移而变化)。请注意,Microsoft 默认的 time.windows.com 因问题而臭名昭著。我不会相信我的域名。
如果您之前一直在使用 Windows 时间服务,或者您从其他人那里继承了这个网络,那么在开始重新配置之前将 w32time 重置为默认设置可能是个好主意。在域控制器上运行以下命令,从 PDCe 开始。
net stop w32time
w32tm /unregister <-- If you get an Access Denied message, reboot.
w32tm /register
net start w32time
Run Code Online (Sandbox Code Playgroud)
我建议您在运行这些命令后重新启动服务器 1-2 次,并确保 Windows 时间服务存在,设置为自动,然后启动。我见过 /unregister 命令直到下一次重新启动才生效的情况。然后当你在打完 Windows 补丁后重新启动时会有一个惊喜,w32time 服务突然不见了!
要在您的 PDCe 上配置 Windows 时间服务,我建议您创建一个特定于 PDCe 的 GPO,该 GPO 对 DomainRole = 5 使用 WMI 过滤器,并将所有 NTP 客户端设置放在此处。否则,您可以使用 w32tm 命令,或手动设置注册表。 有关所有三种方法的示例,请参见此处。
将 PDCe 配置为使用 NTP 而不是 NT5DS(Windows 时间服务配置中的类型 = NTP)。否则,PDCe 将尝试与自身同步,这不会很好地工作。
在 Windows 时间服务配置中输入 NTP 服务器列表(在 GPO、注册表或 w32tm 中),确保按以下格式输入服务器列表:server1.whatever.com,0x9 server2.otherplace.com,0x9 server3.another.com,0x9. 每个服务器末尾的 0x9 标志表示使用 SpecialPollInterval (0x1) 中指定的轮询间隔,并且时间同步仅是客户端,而不是双向同步 (0x8)。
在配置 PDCe NTP 客户端时,请检查SpecialPollInterval的值。如果您的 PDCe 是物理盒,请将其设置为 3600 秒(每小时一次)。如果您的 PDCe 是 VM,请选择更激进的方法,例如每 15 分钟一次,以对抗 VM 时间漂移。
一般来说,你不需要弄乱NoticeFlags。默认值 10 适用于所有域控制器(PDCe 或其他)。如果合适,它会自动作为时间源做广告。
我建议所有域控制器(PDCe 和其他)都启用 NTP 服务器。我会为域控制器创建一个 GPO 并在那里启用它。如果您不想使用组策略,您可以在 HKLM\SYSTEM\CCS\Services\W32Time\TimeProviders\NtpServer\Enabled=0x1 的注册表中执行此操作。
确保在所有域控制器上将 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 设置为合理的值!这将保护您的域,以防您的外部 NTP 源之一在杂草中消失并广播非常不准确的时间戳(它已经发生)。如果您使用的是 Win2008 或更高版本,这些限制应默认设置为 48 小时,但 Win2003 将这些设置为无限制。您可以在前面提到的域控制器 GPO 中设置这些,也可以直接在注册表 (HKLM\SYSTEM\CCS\Services\W32Time\Config) 中进行设置。
对于域控制器,我还建议您设置 EventLogFlags = 0x3。随着时间的推移,这将使您对同步进度有一些额外的了解。请注意,有两个 EventLogFlags 值要设置。一个位于 HKLM\SYSTEM\CCS\Services\W32Time\Config(适用于所有域控制器)。另一个在 HKLM\SYSTEM\CCS\Services\W32Time\TimeProviders\NtpClient 下(仅与 PDCe 相关)。两者都可以通过组策略进行管理。我将它们都设置为 0x3。(请注意,我发现 TechNet 和组策略描述之间对此设置的描述存在一些差异。)
除了一台 PDCe,域上的所有其他 Windows 计算机都应设置为使用 NT5DS 域层次结构进行时间同步。这包括所有其他域控制器、任何其他服务器和工作站。NT5DS 是加入域的计算机的默认设置,因此您不需要弄乱它。
请注意,我的域中唯一与时间相关的设置是 (1) 带有 WMI 过滤器的 PDCe NTP 客户端 GPO 和 (2) 启用 NTP 服务器、设置最大相位校正值和 EventLogFlags 的域控制器 GPO。所有组策略时间设置都可以在计算机配置\管理模板\系统\Windows 时间服务下找到。我在注册表或 w32tm 命令中没有任何显式配置。我建议对这些东西使用组策略,以便它超越实际的服务器。如果您将来添加新的域控制器,或更换您的 PDCe,一切都会“正常工作”。否则,您必须记住手动配置新服务器。
关于上述配置的一些附加说明:
虽然它是可能绕过域层次结构,并明确配置客户端同步到某个服务器,我有运气不好与此有关。我建议您将除 PDCe 以外的所有内容都保留在 NT5DS 上,让时间服务按 Microsoft 的预期工作。
请记住,Windows 时间服务旨在对您的系统时钟进行小的定期更正。假设您的服务器的时钟一开始就设置正确,w32time 将保持这种状态。如果您的服务器与您的外部 NTP 源太不同步,它几乎会“放弃”。如果您已遵循上述建议,则应与外部时间源保持密切同步。但是,如果您有一个真正的 VM 环境糟糕的时间漂移(超载的 VM 主机,持续的快照),您可能仍然不同步。如果是这样,您可以调整“尖峰检测”的几个设置。不过,这可能是解决您环境中另一个问题的创可贴。在深入研究设置之前,请务必确保您已实施上述所有建议!
应用配置更改并检查所有内容:
如果您使用组策略来配置时间服务,更改应该很快就会传播到您的所有域控制器。您可以gpupdate /force在每个域控制器上运行该命令(从 PDCe 开始)使其立即发生。
如果您决定不使用组策略并使用 w32tm 或通过编辑注册表手动配置时间服务,请确保您w32tm /config /update在每个受影响的服务器上运行,然后重新启动服务(从 PDCe 开始)。否则你的设置不会生效!
接下来,w32tm /resync /rediscover在 PDCe 上运行。等待几分钟,然后查看事件查看器是否有问题。取消注册/注册时间服务可能会出现一些错误/警告消息,但之后一切都应该是黄金。您应该会看到有关从 NTP 服务器获取有效时间数据的消息。一旦您确定 PDCe 是好的,请转到其他域控制器并运行相同的命令。
一旦时间服务在所有 DC 上同步,您就可以执行w32tm /monitor. 确保列出了域控制器,并且它们的 RefID 和 Stratum 看起来正确。如果您使用的是Stratum 2 服务器,您的PDCe 应该是Stratum 3。您也可以运行w32tm /query /status /verbose(仅限Win2008 或更高版本)并查看上次更新时间。确保它按预期更新。
一旦您的域控制器正常运行,就可以w32tm /resync /rediscover在某些工作站和成员服务器上运行。检查事件查看器是否有错误。如果您弄乱了其他工作站上的时间服务,您可能还必须在它们上运行 w32tm unregister/register 命令。
跟进:
为了完整起见,您应该确保所有非 Windows NTP 客户端(路由器、交换机、打印服务器等)都指向您的域控制器作为时间源。我建议为 ntp.yourdomain.com 设置一个指向 yourdomain.com 的 CNAME DNS 条目。这样您就不必在所有设备上明确列出域控制器名称或 IP 地址,这将有助于您将来添加/停用服务器。您的非 Windows NTP 客户端将使用循环 DNS 中出现的任何域控制器。(请注意,这仅在您在所有域控制器上启用 NTP 服务器时才有效。)
此外,在您的 DHCP 服务器上,确保将范围选项 42 配置为指向您的域控制器。任何支持选项 42 的 DHCP 配置设备将自动与域控制器同步时间。
我的信息来源:
| 归档时间: |
|
| 查看次数: |
39365 次 |
| 最近记录: |