間同步配置與排查:W32Time/NTP/域環(huán)境)
1. 一臺(tái)服務(wù)器時(shí)間跑偏后果比大多數(shù)人想得嚴(yán)重先從最常見的現(xiàn)實(shí)場景切入。很多運(yùn)維同行接手一批 Windows Server 時(shí)最先關(guān)注的往往是磁盤、內(nèi)存、網(wǎng)絡(luò)、服務(wù)狀態(tài)唯獨(dú)把系統(tǒng)時(shí)間當(dāng)成一個(gè)無關(guān)緊要的小項(xiàng)。真等到出事才發(fā)現(xiàn)Windows Server 的時(shí)間同步設(shè)置從來不是可選項(xiàng)而是整套系統(tǒng)信任鏈的地基。我遇到過一個(gè)典型的案例一臺(tái)文件服務(wù)器比標(biāo)準(zhǔn)時(shí)間慢了將近 40 秒表面上什么業(yè)務(wù)都正常結(jié)果域內(nèi)某臺(tái)應(yīng)用服務(wù)器做 Kerberos 認(rèn)證時(shí)頻繁失敗用戶登錄時(shí)好時(shí)壞日志里全是認(rèn)證票據(jù)相關(guān)的報(bào)錯(cuò)。排查了大半天硬件和網(wǎng)絡(luò)最后發(fā)現(xiàn)根因就是這臺(tái)機(jī)器時(shí)間漂移過大——Kerberos 默認(rèn)允許的時(shí)間偏差是 5 分鐘一旦超過這個(gè)閾值票據(jù)就會(huì)被判定為無效。這種問題排查起來最折磨人因?yàn)閳?bào)錯(cuò)信息不會(huì)直接告訴你時(shí)間不對(duì)。時(shí)間同步這件事本質(zhì)上解決的是多臺(tái)機(jī)器之間對(duì)同一時(shí)刻的認(rèn)知保持一致。Windows Server 自帶一套叫W32Time的時(shí)間服務(wù)通過 NTP網(wǎng)絡(luò)時(shí)間協(xié)議與上游時(shí)間源對(duì)時(shí)再逐級(jí)把準(zhǔn)確時(shí)間分發(fā)下去。它看似只是一個(gè)系統(tǒng)服務(wù)背后卻牽涉到域架構(gòu)、網(wǎng)絡(luò)策略、虛擬化平臺(tái)、防火墻規(guī)則等多個(gè)層面。這篇內(nèi)容適合三類人剛接觸 Windows Server 運(yùn)維、需要從零把時(shí)間同步配置跑通的新手已經(jīng)配了但經(jīng)常遇到同步失敗、時(shí)間反復(fù)漂移的中級(jí)運(yùn)維以及在域環(huán)境、虛擬化、集群環(huán)境下需要做精細(xì)化時(shí)間架構(gòu)設(shè)計(jì)的老手。我會(huì)把 W32Time 的工作原理、獨(dú)立服務(wù)器與域環(huán)境兩套配置思路、注冊表關(guān)鍵參數(shù)、排查命令和踩坑經(jīng)驗(yàn)全部攤開講清楚盡量做到看完就能照著復(fù)現(xiàn)。2. 先搞懂 W32Time 的時(shí)間層級(jí)別上來就瞎配2.1 Windows 時(shí)間服務(wù)的分層結(jié)構(gòu)是怎么運(yùn)轉(zhuǎn)的W32Time 不是簡單地連一個(gè)時(shí)間服務(wù)器就完事它有一套明確的層級(jí)概念Stratum時(shí)間層級(jí)。層級(jí)數(shù)字越小表示離權(quán)威時(shí)間源越近。Stratum 0 是原子鐘、GPS 這類物理時(shí)間源本身Stratum 1 是直接對(duì)接這些物理源的服務(wù)器Stratum 2 從 Stratum 1 取時(shí)間以此類推。Windows 在 AD 域環(huán)境里把這個(gè)層級(jí)玩成了自動(dòng)化機(jī)制整個(gè)森林只有一個(gè)權(quán)威時(shí)間源就是根域的 PDC Emulator主域控制器模擬器角色持有者。所有其他域控、成員服務(wù)器、客戶端默認(rèn)都會(huì)自動(dòng)沿著客戶端 → 域控 → PDC → 外部時(shí)間源這條鏈路逐級(jí)對(duì)時(shí)。這就是為什么很多人從沒手動(dòng)配過時(shí)間同步域里的機(jī)器時(shí)間卻基本是準(zhǔn)的——因?yàn)橄到y(tǒng)自動(dòng)幫你搭好了這條鏈。但工作組環(huán)境沒有域就完全是另一回事了。此時(shí)每臺(tái)機(jī)器都是獨(dú)立的誰也不管誰默認(rèn)的時(shí)間源甚至可能指向微軟的time.windows.com而這個(gè)地址在國內(nèi)網(wǎng)絡(luò)環(huán)境下經(jīng)常超時(shí)、不可達(dá)導(dǎo)致同步形同虛設(shè)。這就解釋了為什么很多獨(dú)立部署的 Windows Server 時(shí)間總是不準(zhǔn)。記住一個(gè)判斷原則先確認(rèn)這臺(tái)機(jī)器是域成員還是獨(dú)立服務(wù)器再?zèng)Q定用哪套配置方案。兩者的思路完全不同配置命令也不能混用。2.2 域環(huán)境與工作組環(huán)境的配置差異在哪里域環(huán)境的核心邏輯是信任域控。一臺(tái)成員服務(wù)器開機(jī)后會(huì)自動(dòng)發(fā)現(xiàn)域控向域控請(qǐng)求時(shí)間配置命令通常是w32tm /config /syncfromflags:domhier。這里的domhier就是 domain hierarchy域?qū)蛹?jí)的意思告訴系統(tǒng)沿著域架構(gòu)去找時(shí)間源。手動(dòng)去改這類機(jī)器的外部時(shí)間源反而可能破壞原有的層級(jí)關(guān)系所以域成員一般不推薦手動(dòng)指定外部 NTP。工作組環(huán)境的邏輯則是自己找上游。因?yàn)闆]有人給它分發(fā)時(shí)間必須手動(dòng)告訴它從哪里取時(shí)間、多久取一次、取來的時(shí)間是否要作為權(quán)威再往下分。配置命令會(huì)用w32tm /config /manualpeerlist:... /syncfromflags:manual /reliable:yes這一套。這里有個(gè)新手最容易搞混的點(diǎn)很多教程無腦讓你把所有服務(wù)器都配成手動(dòng)指定外部源結(jié)果域環(huán)境里的機(jī)器被這么一改時(shí)間層級(jí)就亂了域內(nèi)機(jī)器時(shí)間開始出現(xiàn)幾秒甚至幾十秒的差異。所以我一直強(qiáng)調(diào)先判斷環(huán)境再動(dòng)手。2.3 時(shí)間源怎么選穩(wěn)定性差別很大時(shí)間源的選擇直接決定了同步的成功率。常見的幾個(gè)選擇時(shí)間源類型示例適用場景注意點(diǎn)公共 NTP 池ntp.aliyun.com、cn.pool.ntp.org國內(nèi)獨(dú)立服務(wù)器建議配多個(gè)做冗余微軟默認(rèn)time.windows.com通用國內(nèi)訪問偶有超時(shí)內(nèi)網(wǎng)自建自建 NTP/DC有內(nèi)網(wǎng)隔離需求需自行維護(hù)PTP 高精度硬件時(shí)鐘PTP金融、工業(yè)控制對(duì)硬件和網(wǎng)絡(luò)要求高對(duì)絕大多數(shù)中小企業(yè)場景用ntp.aliyun.com搭配ntp1.aliyun.com、ntp2.aliyun.com做多個(gè)候選源就足夠了配置簡單、可達(dá)性好。如果對(duì)時(shí)間精度有極高要求比如高頻交易、工業(yè)同步會(huì)涉及PTP 時(shí)間同步這種更底層協(xié)議那就不是 W32Time 能扛的活了需要專門的硬件時(shí)鐘和 PTP 支持這屬于另一個(gè)專業(yè)方向普通業(yè)務(wù)服務(wù)器用不上。另外微軟官方的time.windows.com雖然配置里常出現(xiàn)但在實(shí)際國內(nèi)網(wǎng)絡(luò)中解析和連通性并不總是理想。我在多處機(jī)房里都碰到過它間歇性超時(shí)的情況所以現(xiàn)在更傾向于直接換成可達(dá)性更好的國內(nèi) NTP 池再配一個(gè)備用地址兜底。2.4 同步周期和輪詢間隔的取舍W32Time 默認(rèn)的輪詢間隔是動(dòng)態(tài)調(diào)整的初始比較頻繁穩(wěn)定后會(huì)逐步拉長到最長約 1 小時(shí)一次SpecialPollInterval默認(rèn) 3600 秒。這個(gè)設(shè)計(jì)其實(shí)很合理剛對(duì)完時(shí)后不需要頻繁占用網(wǎng)絡(luò)等時(shí)間慢慢漂移了再拉長間隔。但在某些要求時(shí)間變化幅度小的場景下有人會(huì)手動(dòng)把間隔改成更短的值。我的經(jīng)驗(yàn)是除非你有明確的需求比如某些日志審計(jì)要求時(shí)間誤差控制在毫秒級(jí)否則不要盲目調(diào)短輪詢間隔。調(diào)太短會(huì)增加網(wǎng)絡(luò)請(qǐng)求量和上游服務(wù)器壓力反而可能觸發(fā)某些 NTP 服務(wù)的限流。默認(rèn) 3600 秒對(duì) 95% 的業(yè)務(wù)場景都?jí)蛴昧恕?. 獨(dú)立服務(wù)器對(duì)接外部時(shí)間源的完整實(shí)操3.1 動(dòng)手前必須先確認(rèn)的三件事正式配置之前先花兩分鐘做三個(gè)檢查能幫你避開后面一大半的坑。第一確認(rèn) W32Time 服務(wù)狀態(tài)。用管理員權(quán)限打開命令提示符執(zhí)行sc query w32time如果看到STATE : 4 RUNNING說明服務(wù)在跑如果是STOPPED先啟動(dòng)它。很多機(jī)器同步失敗最底層的原因就是服務(wù)壓根沒開。第二確認(rèn)這臺(tái)機(jī)器是不是域成員執(zhí)行systeminfo | findstr /i Domain輸出里Domain:后面如果是具體域名說明它加入了域請(qǐng)走域環(huán)境方案下一章不要用本章的獨(dú)立配置。如果顯示W(wǎng)ORKGROUP或類似工作組名稱那就是獨(dú)立服務(wù)器可以繼續(xù)。第三確認(rèn)到目標(biāo) NTP 服務(wù)器的網(wǎng)絡(luò)可達(dá)、UDP 123 端口沒被攔。這是最容易被忽略的一步很多命令執(zhí)行了但同步不上的問題根子都在防火墻。3.2 w32tm 命令逐條拆解與執(zhí)行順序獨(dú)立服務(wù)器對(duì)接外部時(shí)間源標(biāo)準(zhǔn)操作就是下面幾條命令。我把順序和每條的作用都講清楚照著敲基本不會(huì)錯(cuò)。先把服務(wù)停掉避免配置過程中服務(wù)狀態(tài)干擾net stop w32time然后配置時(shí)間源。manualpeerlist里可以填多個(gè)地址用空格分隔系統(tǒng)會(huì)按順序嘗試w32tm /config /manualpeerlist:ntp.aliyun.com ntp1.aliyun.com ntp2.aliyun.com /syncfromflags:manual /reliable:yes /update這條命令里幾個(gè)參數(shù)的含義必須理解到位否則容易配出問題/manualpeerlist手動(dòng)指定上游時(shí)間源列表。/syncfromflags:manual表示我只從手動(dòng)指定的源同步不從域?qū)蛹?jí)同步。/reliable:yes把自己標(biāo)記為可靠時(shí)間源。這一步很關(guān)鍵如果你希望這臺(tái)機(jī)器作為內(nèi)網(wǎng)其他機(jī)器的時(shí)間源就必須設(shè)為 yes否則它自己準(zhǔn)了卻不會(huì)向下分發(fā)。/update立即通知服務(wù)配置已變更無需重啟。配置完重啟服務(wù)net start w32time緊接著強(qiáng)制立即同步一次別等服務(wù)自己慢慢來w32tm /resync如果看到The command completed successfully.恭喜一次就成了。如果報(bào)錯(cuò)別急第五章有完整的排查清單。3.3 注冊表關(guān)鍵參數(shù)調(diào)優(yōu)與含義說明命令行配置能覆蓋大部分需求但有幾個(gè)關(guān)鍵參數(shù)藏在注冊表里值得單獨(dú)調(diào)。路徑是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config這里面幾個(gè)值最常被調(diào)整AnnounceFlags控制本機(jī)是否對(duì)外宣告自己是可靠時(shí)間源。數(shù)值5表示作為可靠時(shí)間源對(duì)外宣告10表示僅客戶端不對(duì)外提供時(shí)間。獨(dú)立服務(wù)器若要做內(nèi)網(wǎng)時(shí)間服務(wù)器設(shè)成 5純客戶端設(shè)成 10。MaxPosPhaseCorrection / MaxNegPhaseCorrection允許的最大正/負(fù)時(shí)間校正幅度單位是秒。默認(rèn)是0xFFFFFFFF約 48 天意味著無論偏差多大都會(huì)一次性校正。但一次性大幅跳變可能導(dǎo)致日志時(shí)間錯(cuò)亂或應(yīng)用異常很多場景下會(huì)改成0xFFFFFFFF之外的值比如0x2A300即 172800 秒 2 天超過就不硬跳避免大跳變。UpdateInterval時(shí)間校正的更新間隔。改完注冊表依然要重啟 w32time 服務(wù)并重新 resync參數(shù)才會(huì)生效。這里我要提醒一句調(diào)注冊表之前先導(dǎo)出備份。W32Time 的某些參數(shù)如果填錯(cuò)單位或格式服務(wù)可能直接起不來恢復(fù)起來很麻煩。還有一個(gè)容易踩的坑NtpClient 和 NtpServer 是兩個(gè)不同的 TimeProvider 子鍵。客戶端相關(guān)參數(shù)比如SpecialPollInterval在TimeProviders\NtpClient下服務(wù)端提供時(shí)間的配置在TimeProviders\NtpServer下別改錯(cuò)地方。要讓本機(jī)對(duì)外提供時(shí)間服務(wù)還得確認(rèn) NtpServer 的Enabled值為 1。3.4 防火墻放行與端口確認(rèn)配置全對(duì)防火墻沒放行一樣同步不上。NTP 走的是UDP 123 端口。作為客戶端去請(qǐng)求上游方向是出站一般默認(rèn)允許但如果你的服務(wù)器同時(shí)要對(duì)外提供時(shí)間服務(wù)做內(nèi)網(wǎng)時(shí)間源就得放行入站的 UDP 123。用 PowerShell 放行入站New-NetFirewallRule -DisplayName Allow NTP -Direction Inbound -Protocol UDP -LocalPort 123 -Action Allow老版本的 Server如 2008 R2、2012可能用的是netshnetsh advfirewall firewall add rule nameAllow NTP dirin actionallow protocolUDP localport123放行之后如果上游還是連不通可以用更底層的工具測一下連通性比如在 Linux 機(jī)器上裝 ntpdate 反向探測或者直接在 Windows 上用w32tm /stripchart看是否能拿到響應(yīng)見第五章。4. 域環(huán)境下的時(shí)間同步架構(gòu)落地4.1 森林根 PDC 的時(shí)間源指定域環(huán)境里整套時(shí)間體系的總閘就是根域的 PDC Emulator。所有域控和成員的時(shí)間最終都匯聚到它身上而它自己需要對(duì)接一個(gè)外部權(quán)威時(shí)間源否則整片域的時(shí)間都會(huì)跟著它一起漂。所以域環(huán)境配置的第一步永遠(yuǎn)是先搞定 PDC。在 PDC 上執(zhí)行w32tm /config /manualpeerlist:ntp.aliyun.com ntp1.aliyun.com /syncfromflags:manual /reliable:yes /update net stop w32time net start w32time w32tm /resync然后驗(yàn)證它確實(shí)在從外部取時(shí)間w32tm /query /source如果輸出的是你配置的 NTP 地址而不是Local CMOS Clock或某個(gè)域控地址說明配置生效了。Local CMOS Clock是最需要警惕的結(jié)果它意味著這臺(tái)機(jī)器根本沒在同步只是用本機(jī)主板晶振在走時(shí)一天漂幾秒到幾十秒都正常。有個(gè)經(jīng)典坑PDC 如果還是虛擬機(jī)且宿主機(jī)在跑時(shí)間同步可能出現(xiàn)虛擬機(jī)時(shí)間被宿主機(jī)強(qiáng)制拉回的現(xiàn)象導(dǎo)致你配的外部源形同虛設(shè)。這種情況需要在虛擬化層面禁用宿主機(jī)與客戶機(jī)的時(shí)間同步詳見第 6 章。4.2 成員服務(wù)器和客戶端的自動(dòng)對(duì)時(shí)邏輯PDC 配好之后其他機(jī)器理論上不需要你做任何額外操作。域控會(huì)從 PDC 取時(shí)間成員服務(wù)器和客戶端會(huì)從任意可達(dá)的域控取時(shí)間整個(gè)層級(jí)自動(dòng)運(yùn)轉(zhuǎn)。但要確認(rèn)這套機(jī)制確實(shí)在工作可以在成員機(jī)上執(zhí)行w32tm /query /source正常輸出應(yīng)該是一個(gè)域控的名字或 IP。如果是Free-running System Clock或Local CMOS Clock說明它沒在域?qū)蛹?jí)里對(duì)時(shí)需要檢查這臺(tái)機(jī)器是否能正常聯(lián)系域控、W32Time 服務(wù)是否運(yùn)行。如果你發(fā)現(xiàn)某臺(tái)成員機(jī)的時(shí)間源指向了奇怪的外部地址很可能是之前有人手動(dòng)配過manualpeerlist殘留的配置覆蓋了域?qū)蛹?jí)邏輯?;謴?fù)方法w32tm /config /syncfromflags:domhier /update net stop w32time net start w32time w32tm /resyncdomhier一配置它就重新回到域的層級(jí)體系里了。4.3 用組策略統(tǒng)一下發(fā)時(shí)間配置在有多臺(tái)域控、上百臺(tái)成員機(jī)的中大型環(huán)境里逐臺(tái)敲命令不現(xiàn)實(shí)。這時(shí)候組策略GPO是最省事的辦法??梢孕陆ㄒ粋€(gè) GPO綁到域控 OU 或需要統(tǒng)一管理的 OU 上在計(jì)算機(jī)配置 → 管理模板 → 系統(tǒng) → Windows 時(shí)間服務(wù)里配置時(shí)間提供程序和全局配置參數(shù)也可以直接下發(fā)注冊表項(xiàng)。我的一般做法是域控層面用 GPO 統(tǒng)一聲明從域?qū)蛹?jí)同步PDC 單獨(dú)手動(dòng)配外部源。這樣一來PDC 是唯一的對(duì)外出口內(nèi)部所有機(jī)器的時(shí)間一致性由 GPO 保證管理邊界清晰排查也簡單——出問題先看 PDC再看 GPO 是否生效。另外提醒一點(diǎn)GPO 應(yīng)用不是實(shí)時(shí)的默認(rèn)有 90 分鐘左右的刷新周期。測試階段可以手動(dòng)gpupdate /force加速。配置完之后一定要在幾臺(tái)機(jī)器上w32tm /query /source驗(yàn)證別假設(shè)下發(fā)了就一定生效。5. 排查實(shí)戰(zhàn)時(shí)間同步故障的定位思路與速查表5.1 一組命令搞定狀態(tài)診斷時(shí)間同步出問題善用w32tm /query系列命令能省掉大量猜謎時(shí)間。我把最常用的幾個(gè)整理出來w32tm /query /status輸出里關(guān)注Source當(dāng)前時(shí)間源、Last Successful Sync Time上次成功同步時(shí)間、Poll Interval輪詢間隔。如果上次成功同步是很久以前或者顯示源是本地時(shí)鐘基本就鎖定問題了。w32tm /query /peers看當(dāng)前配置了哪些對(duì)等時(shí)間源以及它們的狀態(tài)。如果某個(gè)源顯示Unreachable說明網(wǎng)絡(luò)或防火墻有問題。w32tm /stripchart /computer:ntp.aliyun.com /samples:5 /dataonly這個(gè)命令會(huì)向指定時(shí)間源連續(xù)采樣 5 次輸出時(shí)間偏差offset。如果每行都返回正常的偏移值說明網(wǎng)絡(luò)通、對(duì)端可響應(yīng)如果全是錯(cuò)誤說明連通性有問題。w32tm /monitor在域環(huán)境里非常好用它會(huì)列出當(dāng)前機(jī)器與域內(nèi)各域控的時(shí)間偏差一眼能看出哪臺(tái)機(jī)器時(shí)間有問題。5.2 典型故障案例與排查速查表下面這張表是我這些年處理時(shí)間同步問題時(shí)最常碰到的情況直接對(duì)照排查故障現(xiàn)象可能原因排查與解決源顯示 Local CMOS Clock未配置外部源或配置未生效檢查 manualpeerlist 配置重新 resync同步一直超時(shí)UDP 123 被防火墻攔截檢查出站/入站規(guī)則放行 UDP 123域成員時(shí)間不準(zhǔn)殘留手動(dòng)配置覆蓋域?qū)蛹?jí)用 syncfromflags:domhier 恢復(fù)PDC 時(shí)間被拉回虛擬化宿主機(jī)時(shí)間同步干預(yù)在虛擬機(jī)設(shè)置中禁用宿主時(shí)間同步時(shí)間大幅跳變校正幅度閾值設(shè)置過松檢查 MaxPos/NegPhaseCorrection服務(wù)起不來注冊表參數(shù)被改錯(cuò)恢復(fù)備份,檢查單位與格式認(rèn)證票據(jù)報(bào)錯(cuò)時(shí)間偏差超過 5 分鐘立即強(qiáng)制同步縮小偏差除了表格里的情況還有一類玄學(xué)問題值得單說時(shí)間看起來同步了但每隔一段時(shí)間又漂了。這種通常是硬件時(shí)鐘主板 CMOS 電池老化或者虛擬化環(huán)境里宿主機(jī)在持續(xù)注入時(shí)間。前者換電池能解決后者要在虛擬化層面處理。遇到排查困難時(shí)別忘了一件最樸素的事看系統(tǒng)事件日志。W32Time 會(huì)在事件查看器的系統(tǒng)日志里記錄同步失敗、時(shí)間源不可達(dá)等信息事件源是Time-Service。很多時(shí)候日志里的一句話比你敲十遍命令都管用。6. 虛擬化與集群場景里那些容易翻車的細(xì)節(jié)6.1 虛擬機(jī)時(shí)間同步?jīng)_突的處理現(xiàn)在大量 Windows Server 跑在虛擬化平臺(tái)上這引入了一個(gè)新的沖突源宿主機(jī)本身可能在給虛擬機(jī)同步時(shí)間。當(dāng)宿主機(jī)的時(shí)間同步機(jī)制和虛擬機(jī)內(nèi)的 W32Time 同時(shí)工作時(shí)兩者會(huì)互相打架表現(xiàn)為虛擬機(jī)時(shí)間反復(fù)被拉來拉去你配的外部 NTP 明明生效了過一會(huì)兒又不對(duì)了。處理思路很明確要么讓宿主機(jī)管要么讓虛擬機(jī)內(nèi)自己管二選一不能兩個(gè)都開。如果選擇虛擬機(jī)內(nèi)自主對(duì)時(shí)推薦用于需要精確控制時(shí)間的場景就要在虛擬化平臺(tái)里關(guān)閉宿主機(jī)向客戶機(jī)同步時(shí)間的選項(xiàng)。具體位置因平臺(tái)而異VMware 里是在虛擬機(jī)設(shè)置的選項(xiàng) → VMware Tools → 時(shí)間同步取消勾選Hyper-V 里是在虛擬機(jī)設(shè)置的管理 → 集成服務(wù)里取消時(shí)間同步。這也是之前熱詞里提到的VMware 安裝 Windows ServerVirtualBox 安裝 Windows Server場景下最常被忽略的一步。裝完系統(tǒng)時(shí)間總不準(zhǔn)八成是因?yàn)樗拗鳈C(jī)集成服務(wù)的時(shí)間同步?jīng)]關(guān)。6.2 集群和高可用環(huán)境的時(shí)間一致性要求在故障轉(zhuǎn)移集群、SQL Server Always On、數(shù)據(jù)庫主從這類高可用架構(gòu)里時(shí)間一致性要求會(huì)比單機(jī)嚴(yán)格得多。因?yàn)檫@些系統(tǒng)經(jīng)常依賴時(shí)間戳來判斷事務(wù)順序、做日志比對(duì)、判斷心跳是否超時(shí)。如果集群節(jié)點(diǎn)之間時(shí)間偏差過大可能出現(xiàn)腦裂誤判、日志時(shí)間錯(cuò)亂、復(fù)制延遲異常等問題。我的經(jīng)驗(yàn)是把集群節(jié)點(diǎn)全部納入統(tǒng)一的時(shí)間層級(jí)管理要么統(tǒng)一從域控取時(shí)間要么指定一個(gè)節(jié)點(diǎn)作為集群內(nèi)的時(shí)間源其余節(jié)點(diǎn)從它同步盡量避免每個(gè)節(jié)點(diǎn)各自對(duì)接不同的外部源。這樣即使外部源有波動(dòng)集群內(nèi)部的時(shí)間基準(zhǔn)也始終是一致的。同時(shí)定期用w32tm /monitor或w32tm /stripchart抽查節(jié)點(diǎn)間偏差把問題發(fā)現(xiàn)在前面。還有一點(diǎn)常被忽略的集群節(jié)點(diǎn)的時(shí)區(qū)設(shè)置要統(tǒng)一。時(shí)區(qū)不一致雖然不影響 UTC 時(shí)間但會(huì)導(dǎo)致日志顯示時(shí)間混亂排查跨節(jié)點(diǎn)問題時(shí)容易誤判先后順序。7. 我在實(shí)際運(yùn)維里的一些體會(huì)踩了這么多坑現(xiàn)在接手新環(huán)境的 Windows Server我的第一件事就是查時(shí)間同步狀態(tài)而不是等它出問題。具體動(dòng)作很簡單w32tm /query /status看一眼 Source 和 Last Successful Sync Time兩秒鐘的事卻能提前發(fā)現(xiàn)隱患。還有一個(gè)特別實(shí)用的習(xí)慣在環(huán)境交付文檔里明確寫清楚時(shí)間源架構(gòu)——PDC 對(duì)接了哪些外部源、內(nèi)網(wǎng)哪些機(jī)器作為二級(jí)時(shí)間源、虛擬化時(shí)間同步是否關(guān)閉。這樣下一次換人維護(hù)不用重新摸一遍底。最后分享一個(gè)小技巧。要快速判斷一批機(jī)器時(shí)間是否一致不用逐臺(tái)登錄。在域環(huán)境里隨便找一臺(tái)機(jī)器跑w32tm /monitor它會(huì)一次性列出與多臺(tái)域控的偏差哪臺(tái)漂了一眼就看得出來。這比寫腳本巡檢快得多也直觀得多。時(shí)間同步這東西平時(shí)不出聲一出聲就是認(rèn)證、日志、數(shù)據(jù)一致性的連鎖問題?;ò胄r(shí)把它一次性配對(duì)、配準(zhǔn)比事后花半天排查要?jiǎng)澦愕枚唷?