Синхронизация времени Active Directory - идентификатор события службы времени 50
У меня есть домен Active Directory с двумя контроллерами домена. Первый контроллер домена в лесу / домене - это Server 2012, второй - 2008 R2. Первый DC выполняет роль эмулятора PDC.
Я время от времени получаю предупреждение от Time-Service
источник, код события 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.
Синхронизация времени в домене настраивается со вторым DC для синхронизации с использованием /syncfromflags:DOMHIER
флаг. Первый DC сконфигурирован для синхронизации времени с использованием /syncfromflags:MANUAL /reliable:YES
из списка peerlist, состоящего из нескольких серверов stratum 2 в Великобритании, таких как ntp2d.mcc.ac.uk
,
Я запутался, почему я получаю это предупреждение о событии. Это означает, что мой эмулятор PDC не может синхронизировать время с предположительно надежным внешним источником времени, и он указывает разницу во времени>5 секунд на 900 секунд. Стоит также упомянуть, что я использовал британский пул с ntp.org, но я получал предупреждение гораздо чаще. После обновления на ряд британских серверов академического времени он кажется более надежным.
Может кто-то с большим опытом пролить некоторый свет на это - возможно, это просто переходный процесс? Должен ли я игнорировать предупреждение? Моя конфигурация звучит?
РЕДАКТИРОВАТЬ:
Я должен добавить, что контроллеры домена являются виртуальными и установлены на двух отдельных физических хостах VMware ESXi/vSphere.
Я также могу подтвердить, что в соответствии с комментариями и рекомендациями MDMarra, временная синхронизация VMware отключена, поскольку:
c:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe timesync status
возвращаетсяDisabled
,
РЕДАКТИРОВАТЬ 2
Возникла какая-то странная новая проблема. Я заметил образец. Первоначально предупреждения с идентификатором 50 происходили бы примерно в 12:30 каждый день. Это интересно, поскольку резервное копирование в Veeam происходит в 12 часов дня.
Поскольку я внес изменения, обсужденные здесь, теперь я получаю идентификатор события 51 вместо 50. Новое предупреждение говорит, что:
The time sample received from peer server.ac.uk differs from the local time by -40 seconds
(Или примерно 40 секунд). Это случилось два дня подряд. Теперь я еще больше запутался. Очевидно, что время никогда не обновляется, пока я не вмешаюсь вручную.
Похоже, что проблема связана с виртуализацией и veeam. Что-то может происходить, когда Veeam выполняет резервное копирование PDCe. Какие-либо предложения?
ОБНОВЛЕНИЕ И РЕЗЮМЕ
Превосходный список ресурсов msemack ниже (принятый ответ) предоставил достаточно информации для правильной настройки службы времени в домене. Это должно быть первым портом захода для всех будущих людей, желающих проверить свою конфигурацию.
Последний вопрос "40-секундный переход", который я решил (больше нет предупреждений), изменив настройки синхронизации времени VMware, как указано в статье базы знаний veeam здесь: http://www.veeam.com/kb1202
В любом случае, если какой-либо будущий читатель будет использовать ESXi, veeam или нет, ресурсы здесь являются отличным источником информации по теме синхронизации времени, и ответ msemack особенно ценен.
2 ответа
Вот моя рекомендуемая конфигурация для синхронизации времени домена Windows, собранная из нескольких статей Microsoft TechNet и постов в блоге.
Если ваши серверы виртуализированы, не используйте какие-либо функции синхронизации времени инструментов VMware. Просто позвольте службе времени Windows (w32time) выполнить свою работу. VMware даже так говорит. Я предполагаю, что то же самое верно для Hyper-V. Более того, если у вас есть как инструменты VM, так и служба времени Windows, пытающиеся управлять системными часами, вы можете столкнуться с ситуацией "перетягивания каната", когда ваши часы будут постоянно прыгать и никогда не будут точными.
Ваш эмулятор основного контроллера домена должен быть настроен вручную для синхронизации с несколькими внешними NTP-серверами (четыре - это хорошее число). Использование нескольких источников NTP обеспечивает избыточность и служит проверкой работоспособности в случае, если один сервер начинает отправлять неверные данные ( это уже было раньше). Active Directory предполагает, что ваш PDCe является центральным авторитетным источником времени для вашей сети. Все остальное в вашем домене должно синхронизироваться с PDCe (включая другие контроллеры домена).
Я рекомендую, чтобы ваш PDCe был физическим сервером (если это возможно). Любой другой сервер может быть виртуальной машиной. Я чувствую себя более комфортно, когда PDCe является физическим сервером, по двум причинам:
3a. Физический сервер менее подвержен смещению времени. Временной дрейф ВМ - хорошо документированное явление. Виртуализированный сервер может видеть смещение часов на несколько минут в день. Не хороший выбор для источника времени! (Обратите внимание, что даже на физическом сервере часы реального времени будут дрейфовать на ~2 секунды в день без внешнего источника. Вот почему вам нужен NTP.)
3b. Я знаю, что дата / время физического сервера будут корректно отображаться после холодного включения. Несколько лет назад у меня была ситуация, когда при полном отключении серверной комнаты виртуальные машины выдавали время по UTC вместо местного часового пояса. Я думаю, что они потянули время с хоста ESX (который был в UTC) и не корректировали часовой пояс должным образом. Это вызвало все виды удовольствия, когда службы не запускались. Пришлось вручную корректировать время и перезагружать всех.
Если ваш PDCe в настоящее время является виртуальной машиной, и у вас есть физический контроллер домена, переносить роли относительно легко.
Microsoft (и другие) рекомендуют использовать NTP-серверы Stratum 2 или Stratum 3 в качестве источника времени для вашего 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). Нет никакой гарантии относительно слоя сервера, который вы обслуживаете из пула.
Вместо этого я рекомендую вам выбрать четыре сервера Stratum 2 из списка ntp.org. Попробуйте выбрать те, которые физически близки вам (задержка сети вредит 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
Я рекомендую перезагрузить сервер 1-2 раза после выполнения этих команд и убедиться, что служба времени Windows присутствует, установлена на Автоматически и запущена. Я видел ситуации, когда команда / unregister не действовала до следующей перезагрузки. Тогда у вас будет сюрприз, когда вы перезагружаетесь после установки исправлений Windows, и служба w32time внезапно пропадает!
Чтобы настроить службу времени Windows на вашем PDCe, я рекомендую вам создать GPO для конкретного PDCe, который использует фильтр WMI для DomainRole = 5, и поместить все настройки вашего клиента NTP здесь. В противном случае вы можете использовать команду w32tm или установить реестр вручную. Смотрите здесь примеры всех трех методов.
Настройте PDCe для использования NTP вместо NT5DS (Тип = NTP в конфигурации службы времени Windows). В противном случае PDCe попытается синхронизироваться с самим собой, что не очень хорошо работает.
Введите список серверов NTP в конфигурации службы времени Windows (в виде объекта групповой политики, реестра или w32tm), убедитесь, что вы вводите список серверов в следующем формате:
server1.whatever.com,0x9 server2.otherplace.com,0x9 server3.another.com,0x9
, Флаги 0x9 в конце каждого сервера указывают на использование интервала опроса, указанного в SpecialPollInterval (0x1), и что временная синхронизация только для клиента, а не двусторонняя синхронизация (0x8).При настройке клиента PDCe NTP проверьте значение SpecialPollInterval. Если ваш PDCe является физическим блоком, установите его на 3600 секунд (один раз в час). Если ваш PDCe является виртуальной машиной, выберите что-то более агрессивное, например каждые 15 минут, для борьбы со смещением времени виртуальной машины.
В общем, вам не нужно связываться с AnnounceFlags. Значение по умолчанию 10 подходит для всех контроллеров домена (PDCe или иным образом). При необходимости он будет автоматически рекламироваться как источник времени.
Я рекомендую, чтобы на всех контроллерах домена (PDCe и других) был включен NTP-сервер. Я хотел бы создать объект групповой политики для контроллеров домена и включить его там. Если вы не хотите использовать групповую политику, вы можете сделать это в реестре по адресу HKLM\SYSTEM\CCS\Services\W32Time\TimeProviders\NtpServer\Enabled=0x1.
Убедитесь, что для MaxPosPhaseCorrection и MaxNegPhaseCorrection установлено нормальное значение на всех контроллерах домена! Это защитит ваш домен в случае, если один из ваших внешних источников NTP погаснет в сорняках и передаст крайне неточную временную метку ( это произошло). Если у вас Win2008 или новее, эти ограничения должны быть установлены на 48 часов по умолчанию, но для Win2003 они установлены на неограниченное количество. Вы можете установить их в ранее упомянутом объекте групповой политики контроллеров домена или сделать это непосредственно в реестре (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) GPO NTP-клиента PDCe с фильтром WMI и (2) GPO контроллеров домена, который включает NTP-сервер, устанавливает максимальные значения коррекции фазы и EventLogFlags. Все параметры времени групповой политики можно найти в разделе "Конфигурация компьютера \ Административные шаблоны \ Система \ Служба времени Windows". У меня нет явной конфигурации в реестре или с помощью команды w32tm. Я рекомендую использовать групповую политику для этого материала, чтобы он выходил за пределы реального сервера. Если вы добавите новый контроллер домена в будущем или замените свой PDCe, все будет "просто работать". В противном случае вы должны помнить, чтобы вручную настроить новый сервер.
Некоторые дополнительные замечания по вышеупомянутой конфигурации:
Хотя можно обойти иерархию доменов и явно настроить синхронизацию клиентов с определенным сервером, мне не повезло с этим. Я рекомендую вам просто оставить все, кроме PDCe на NT5DS, и позволить службе времени работать так, как задумал Microsoft.
Имейте в виду, что служба времени Windows предназначена для небольших небольших периодических исправлений системных часов. Предполагается, что часы вашего сервера были установлены правильно с самого начала, и w32time сохранит их так. Если ваш сервер слишком далеко не синхронизирован с внешними источниками NTP, он в значительной степени "сдастся". Если вы следовали приведенным выше рекомендациям, вы должны оставаться в синхронизации с внешними источниками времени. Однако, если у вас есть виртуальная среда с очень плохим смещением времени (перегруженный хост виртуальной машины, постоянные моментальные снимки), вы все равно можете выйти из синхронизации. Если это так, есть несколько настроек "обнаружения пиков", которые вы можете настроить. Это, вероятно, лейкопластырь на другую проблему в вашей среде, хотя. Убедитесь, что вы выполнили все рекомендации, приведенные выше, прежде чем углубляться в настройки!
Применение изменений конфигурации и проверка всего:
Если вы использовали групповую политику для настройки службы времени, изменение должно вскоре распространиться на все ваши контроллеры домена. Вы можете запустить
gpupdate /force
Команда на каждом контроллере домена (начиная с PDCe) заставляет это произойти немедленно.Если вы решили не использовать групповую политику и вручную настроить службу времени с помощью w32tm или путем редактирования реестра, обязательно запустите
w32tm /config /update
на каждом уязвимом сервере, а затем перезапустите службу (начиная с PDCe). В противном случае ваши настройки не вступят в силу!Далее беги
w32tm /resync /rediscover
на PDCe. Подождите несколько минут, затем посмотрите на Event Viewer на наличие проблем. Могут быть некоторые сообщения об ошибках / предупреждениях от отмены регистрации / регистрации службы времени, но после этого все должно быть золотым. Вы должны увидеть сообщения о получении действительных данных времени с ваших серверов NTP. Как только вы убедитесь, что PDCe исправен, перейдите на другие контроллеры домена и выполните те же команды.Как только служба синхронизации синхронизируется на всех DC, вы можете сделать
w32tm /monitor
, Убедитесь, что контроллеры домена перечислены и их RefID и Stratum выглядят правильно. Если вы используете серверы Stratum 2, ваш PDCe должен быть Stratum 3. Вы также можете запуститьw32tm /query /status /verbose
(Только для Win2008 или более поздней версии) и смотрите время последнего обновления. Убедитесь, что он обновляется, как ожидалось.Как только ваши контроллеры домена в порядке, запустите
w32tm /resync /rediscover
на некоторых рабочих станциях и рядовых серверах. Проверьте программу просмотра событий на наличие ошибок. Если вы запутались со службой времени на других рабочих станциях, возможно, вам также придется выполнить на них команды w32tm unregister/register.
Следовать за:
Для полноты картины вы должны убедиться, что все ваши клиенты NTP, отличные от Windows (маршрутизаторы, коммутаторы, серверы печати и т. Д.), Указаны на контроллерах домена в качестве источника времени. Я рекомендую настроить запись CNAME DNS для ntp.yourdomain.com, которая указывает на yourdomain.com. Таким образом, вам не нужно явно указывать имена контроллеров домена или IP-адреса на всех ваших устройствах, что поможет при добавлении / удалении серверов в будущем. Ваши клиенты NTP, отличные от Windows, будут использовать любой контроллер домена, установленный в циклическом DNS. (Обратите внимание, что это работает, только если вы включили NTP-сервер на всех ваших контроллерах домена.)
Кроме того, убедитесь, что на вашем DHCP-сервере (-ах) опция 42 настроена так, чтобы указывать на контроллеры вашего домена. Любое настроенное DHCP-устройство, которое поддерживает опцию 42, автоматически синхронизирует время с контроллерами домена.
Источники для моей информации:
- Хороший обзор настройки PDCe
- Технический справочник службы времени Windows
- Еще один пример PDCe GPO
- Как настроить список NTP-серверов и использовать SpecialPollInterval, часть 1
- Как настроить список NTP-серверов и использовать SpecialPollInterval, часть 2
- Настройки реестра W32Time
- Параметры групповой политики W32Time
- MaxPosPhaseCorrection и MaxNegPhaseCorrection
- Отладка W32Time
- Информация о AnnounceFlags
- Блог с больше, чем вы когда-либо хотели знать о w32time
- О дерьмо, плохой NTP-сервер вызвал откат времени! Часть 1
- О дерьмо, плохой NTP-сервер вызвал откат времени! Часть 2
- VMware Best Practices для учета рабочего времени в Windows
- Информация VMware о виртуализации контроллера домена
Возможно, вы захотите увидеть, что отображается в журнале отладки w32tm, когда происходит событие.
Чтобы включить ведение журнала отладки:
w32tm /debug /enable /file:C:\Windows\Debug\w32tm.log /size:50000000 /entries:0-300
Дополнительная информация:
http://blogs.msdn.com/b/w32time/archive/2008/02/28/configuring-the-time-service-enabling-the-debug-log.aspx
Что касается правильности конфигурации, если ваш DC не рекламирует сервер времени в течение длительных периодов времени, это будет проблемой. Вы можете проверить, является ли ваш DC рекламой, используя команду:
nltest /dsgetdc:domain.com
Он должен иметь флаг TIMESERV.
Вы можете просмотреть подробную информацию о службе времени, используя команду:
w32tm /query /status /verbose
Образец вывода:
Leap Indicator: 0(no warning)
Stratum: 2 (secondary reference - syncd by (S)NTP)
Precision: -6 (15.625ms per tick)
Root Delay: 0.0312500s
Root Dispersion: 0.0314141s
ReferenceId: 0x81060F1E (source IP: 129.6.15.30)
Last Successful Sync Time: 3/25/2014 11:55:30 AM
Source: time-c.nist.gov
Poll Interval: 7 (128s)
Phase Offset: 0.0000667s
ClockRate: 0.0156001s
State Machine: 2 (Sync)
Time Source Flags: 0 (None)
Server Role: 64 (Time Service)
Last Sync Error: 0 (The command completed successfully.)
Time since Last Good Sync Time: 97.2535519s
Конечный автомат должен быть "Синхронизирован", а роль сервера должна быть "Служба времени". Если Source не является внешним NTP-сервером в списке пиров, это будет проблемой. Известные неверные исходные записи, на которые следует обратить внимание: "Free Running System Clock" или "Local CMOS Clock".