Active Directory 時間同步 - 時間服務事件 ID 50
我有一個帶有兩個 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.
域中的時間同步配置為使用該
/syncfromflags:DOMHIER
標誌與第二個 DC 同步。第一個 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
(或大約 40 秒)。這已經連續兩天發生了。現在我更加困惑了。顯然,在我手動干預之前,時間永遠不會更新。
該問題似乎與虛擬化和 veeam 有關。當 veeam 備份 PDCe 時,可能會發生一些事情。有什麼建議麼?
更新和總結
msemack 下面的優秀資源列表(接受的答案)提供了足夠的資訊來正確配置域中的時間服務。對於希望驗證其配置的任何未來人來說,這應該是第一個停靠點。
我通過調整 VMware 時間同步設置解決了最後一個“40 秒跳躍”問題(沒有更多警告),如 veeam 知識庫文章中所述:http: //www.veeam.com/kb1202
無論如何,如果任何未來的讀者使用 ESXi,無論是否使用 veeam,這裡的資源都是關於時間同步主題的極好資訊來源,msemack 的回答特別寶貴。
這是我推薦的 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 並且您有可用的物理域控制器,則將角色轉移到. 4. Microsoft(和其他)建議您使用 Stratum 2 或 Stratum 3 NTP 伺服器作為 PDCe 的時間源。 5. 雖然存在公共 Stratum 1 伺服器,但它們的數量有限,而且它們經常超載。當你並不真正需要它時,使用 Stratum 1 伺服器作為時間源會讓你成為一個混蛋。(是的,有些人確實需要 Stratum 1。您可能不是其中之一。如果您真的想使用 Stratum 1 源,請為您的本地網路購買 GPS 時鐘。) 6. 您所有的外部 NTP 源都應該在同一個 Stratum 中。 假設您有一個 Stratum 2 源和幾個 Stratum 3 源。Windows 時間服務將支持 Stratum 2 源。您的 PDCe 將成為 Stratum 3 伺服器。w32time 將忽略 Stratum 3 伺服器(因為它們並不比您的 PDCe 好)。如果沒有人工干預(例如重新啟動時間服務),Windows 不會讓您的伺服器降級到更高/更差的層。因此,如果您的 Stratum 2 源離線,您將無法回退。 7. 因為 Windows 時間服務對時間源的 Stratum 很挑剔,所以我不建議使用 pool.ntp.org(至少不用於 PDCe)。無法保證您從池中獲得的伺服器的層級。 8. 相反,我建議您從ntp.org 列表中選擇四個 Stratum 2 伺服器。嘗試選擇物理上離你很近的那些(網路延遲會傷害 NTP)。驗證伺服器仍然有效且活動(此列表會隨時間而變化)。請注意,Microsoft 預設的 time.windows.com 因問題而臭名昭著。我不會相信我的域名。 9. 如果您之前一直在使用 Windows 時間服務,或者您從其他人那裡繼承了此網路,那麼在開始重新配置之前將 w32time 重置為預設設置可能是個好主意。從 PDCe 開始,在域控制器上執行以下命令。
net stop w32time w32tm /unregister <-- If you get an Access Denied message, reboot. w32tm /register net start w32time
我建議您在執行這些命令後重新啟動伺服器 1-2 次,並確保 Windows 時間服務存在,設置為自動並啟動。我見過 /unregister 命令直到下一次重新啟動後才生效的情況。然後,當您在打完 Windows 更新檔後重新啟動時,您會驚訝地發現 w32time 服務突然失去了! 10. 要在 PDCe 上配置 Windows 時間服務,我建議您創建一個特定於 PDCe 的 GPO,該 GPO 使用 DomainRole = 5 的 WMI 過濾器,並將所有 NTP 客戶端設置放在這裡。否則,您可以使用 w32tm 命令,或手動設置系統資料庫。 有關所有三種方法的範例,請參見此處。 11. 將 PDCe 配置為使用 NTP 而不是 NT5DS(類型 = Windows 時間服務配置中的 NTP)。否則,PDCe 將嘗試與自身同步,這不會很好地工作。 12. 在 Windows 時間服務配置中輸入 NTP 伺服器列表(在 GPO、系統資料庫或 w32tm 中),確保以以下格式輸入伺服器列表:
server1.whatever.com,0x9 server2.otherplace.com,0x9 server3.another.com,0x9
. 每個伺服器末尾的 0x9 標誌表示使用 SpecialPollInterval (0x1) 中指定的輪詢間隔,並且時間同步是僅限客戶端的,而不是雙向同步 (0x8)。 13. 配置 PDCe NTP 客戶端時,檢查SpecialPollInterval的值。如果您的 PDCe 是物理框,請將其設置為 3600 秒(每小時一次)。如果您的 PDCe 是 VM,請選擇更激進的方法,例如每 15 分鐘一次,以對抗 VM 時間漂移。 14. 一般來說,您不需要弄亂AnnounceFlags。預設值 10 適用於所有域控制器(PDCe 或其他)。如果合適,它將自動作為時間源進行廣告。 15. 我建議所有域控制器(PDCe 和其他)都啟用 NTP 伺服器。我會為域控制器創建一個 GPO 並在那裡啟用它。如果您不想使用組策略,您可以在 HKLM\SYSTEM\CCS\Services\W32Time\TimeProviders\NtpServer\Enabled=0x1 的系統資料庫中執行此操作。 16. 確保在所有域控制器上將 MaxPosPhaseCorrection 和 MaxNegPhaseCorrection 設置為合理的值!這將保護您的域,以防您的外部 NTP 源之一在雜草中消失並廣播非常不准確的時間戳(它已經發生了)。如果您是 Win2008 或更高版本,這些限制應預設設置為 48 小時,但 Win2003 將這些設置為無限制。您可以在前面提到的域控制器 GPO 中設置這些,或者直接在系統資料庫中進行設置 (HKLM\SYSTEM\CCS\Services\W32Time\Config)。 17. 對於域控制器,我還建議您設置 EventLogFlags = 0x3。隨著時間的推移,這將使您對同步進度有一些額外的了解。請注意,要設置兩個 EventLogFlags 值。一個位於 HKLM\SYSTEM\CCS\Services\W32Time\Config 下(適用於所有域控制器)。另一個位於 HKLM\SYSTEM\CCS\Services\W32Time\TimeProviders\NtpClient 下(僅與 PDCe 相關)。兩者都可以通過組策略進行管理。我將它們都設置為0x3。(請注意,我發現 TechNet 和組策略描述之間對此設置的描述存在一些差異。) 18. 除了一個 PDCe 之外,域中的所有其他 Windows 電腦都應設置為使用 NT5DS 域層次結構進行時間同步。這包括所有其他域控制器、任何其他伺服器和工作站。NT5DS 是加入域的電腦的預設設置,因此您不需要弄亂它。 19. 請注意,我的域中唯一與時間相關的設置是 (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 取消註冊/註冊命令。跟進:
- 為了完整起見,您應該確保所有非 Windows NTP 客戶端(路由器、交換機、列印伺服器等)都指向您的域控制器作為時間源。我建議為指向 yourdomain.com 的 ntp.yourdomain.com 設置 CNAME DNS 條目。這樣您就不必在所有設備上明確列出域控制器名稱或 IP 地址,這將有助於您將來添加/停用伺服器。您的非 Windows NTP 客戶端將使用輪詢 DNS 中出現的任何域控制器。(請注意,這僅在您在所有域控制器上啟用 NTP 伺服器時才有效。)
- 此外,在您的 DHCP 伺服器上,確保將範圍選項 42 配置為指向您的域控制器。任何支持選項 42 的 DHCP 配置設備都會自動與域控制器同步時間。
我的資訊來源:
- 設置 PDCe 的良好概述
- Windows 時間服務技術參考
- PDCe GPO 的另一個範例
- 如何設置 NTP 伺服器列表和使用 SpecialPollInterval 第 1 部分
- 如何設置 NTP 伺服器列表並使用 SpecialPollInterval 第 2 部分
- W32Time 系統資料庫設置
- W32Time 組策略設置
- MaxPosPhaseCorrection 和 MaxNegPhaseCorrection
- 調試 W32Time
- AnnounceFlags 上的資訊
- 關於 w32time 的部落格比你想知道的更多
- 哦,廢話,糟糕的 NTP 伺服器導致時間回滾!第1部分
- 哦,廢話,糟糕的 NTP 伺服器導致時間回滾!第2部分
- Windows 中的 VMware 計時最佳實踐
- 有關虛擬化域控制器的 VMware 資訊