Я разработчик, и мы используем Quartz.Net, широко используемую библиотеку планирования с хранилищем SQL для запуска кластера серверов заданий (виртуальных машин в кластере ESXI).
Кварц.Неттребуетчто время будет синхронизировано между экземплярами сервера заданий и рекомендует использовать для этого NTP.
Часы должны показывать время с разницей в одну секунду.
Наши системные администраторы используют Windows NTP для синхронизации времени с контроллером домена. Синхронизация виртуальных машин с хостом ESXI отключена.
Они продолжают настаивать, что "в течение секунды" - это неправильное требование и его невозможно выполнить без аппаратных устройств GPS-синхронизации. Их SLA и уровень мониторинга - "в течение 3 минут".
Мы наблюдаем периодические (раз в 2–3 месяца) случаи рассинхронизации кварцевых часов, которые соответствуют рассинхронизации времени.
- Правильно ли мы просим «в течение секунды» или нам нужно вообще отказаться от Quartz?
- Если да, то какие изменения рекомендуется внести в нашу настройку?
решение1
На дворе 2018 год. Windows способна синхронизировать серверы в течение 2 мс или около того, как того требуют правила MIFID II. Так что ваша проблема — не проблема.
Наши системные администраторы используют Windows NTP для синхронизации времени с контроллером домена. Синхронизация виртуальных машин с хостом ESXI отключена.
Почему? Хост может справиться с этим гораздо лучше (будучи аппаратным обеспечением), а у вас их гораздо меньше. Ваши сисадмины стреляют себе в ногу, а потом жалуются, что истекают кровью.
Они продолжают настаивать, что "в течение секунды" - это неправильное требование и его невозможно выполнить без аппаратных устройств GPS-синхронизации. Их SLA и уровень мониторинга - "в течение 3 минут".
OLD — древний — Windows синхронизировалась в течение этого периода времени, поскольку билеты Kerberos имели срок действия 5 минут.
Но сейчас, как я уже сказал, 2018 год. В финансовой индустрии сейчас довольно жесткие требования, и MS справляется с этим — с 2012 года, я думаю. 2016 год полностью ввел это в действие. Миллисекундная точность в Интернете — это решенная проблема — решенная 50 лет назад на самом деле для приличного соединения. NTP может с этим справиться. Вам, возможно, придется поставить дешевый аппаратный блок, если вы хотите сократить трафик (т. е. создать свой собственный источник времени NTP уровня 3), но это, опять же, даже не дорого.
Правильно ли мы просим «в течение секунды» или нам нужно вообще отказаться от Quartz?
Вам нужно программировать для случайных проблем со временем - как вы бы сделали с оборудованием. Но "в течение секунды" - это шутка, а не требование - его тривиально выполнить в обычных обстоятельствах.
Некоторые ссылки:
https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/точное-время
Правительственные постановления, такие как: точность 50 мс для FINRA в США, 1 мс для ESMA (MiFID II) в ЕС.
Там много подробностей и инструкций. Это действительно потрясающее чтение, если вам нужно решить эту проблему. Возможно, вам придется обновить гипервизор — они говорят о Hyper-V. VMWare должна уметь делать то же самое, но не уверен, насколько старая у вас версия.
решение2
Правильно ли мы просим «в течение секунды» или нам нужно вообще отказаться от Quartz?
Существует множество веских причин, по которым различным стекам приложений необходим жесткий контроль времени, и то, о чем просит Quartz, далеко не необычно.
Если да, то какие изменения рекомендуется внести в нашу настройку?
Лучше всего заставить каждую часть вашей системы использовать NTP и направить их на одну и ту же пару серверов NTP. Таким образом, хосты ESXi и работающие на них виртуальные машины, все используют одни и те же источники NTP, одни и те же для всего остального. Таким образом, даже если серверы NTP «не работают», то по крайней мере каждая часть вашей системы будет обновлена друг для друга.
решение3
https://docs.microsoft.com/en-us/windows-server/networking/windows-time-service/support-boundary
Поддержка высокой точности для Windows 8.1 и 2012 R2 (или более ранних версий)
Более ранние версии Windows (до Windows 10 1607 или Windows Server 2016 1607) не могут гарантировать высокую точность времени. Служба времени Windows в этих системах:
Обеспечивает необходимую точность времени для удовлетворения требований аутентификации Kerberos версии 5.
Предоставлено приблизительно точное время для клиентов и серверов Windows, присоединенных к общему лесу Active Directory.
Более строгие требования к точности не предусмотрены спецификацией службы времени Windows в этих операционных системах и не поддерживаются.
Windows 10 и Windows Server 2016
Точность времени в Windows 10 и Windows Server 2016 была существенно улучшена, при этом сохранилась полная обратная совместимость NTP со старыми версиями Windows. При правильных условиях эксплуатации системы под управлением Windows 10 или Windows Server 2016 и более новых версий могут обеспечивать точность в 1 секунду, 50 мс (миллисекунд) или 1 мс.
Точность цели: 1 секунда (1с)
Чтобы достичь точности в 1 секунду для конкретной целевой машины по сравнению с высокоточным источником времени:
Целевая система должна работать под управлением Windows 10, Windows Server 2016.
Целевая система должна синхронизировать время с иерархией серверов времени NTP, получая в результате высокоточный, совместимый с Windows источник времени NTP.
Все операционные системы Windows в иерархии NTP, упомянутой выше, должны быть настроены, как описано в документации «Настройка систем для высокой точности».
Совокупная односторонняя сетевая задержка между целью и источником не должна превышать 100 мс. Совокупная сетевая задержка измеряется путем сложения индивидуальных односторонних задержек между парами узлов клиент-сервер NTP в иерархии, начиная с цели и заканчивая источником. Для получения дополнительной информации, пожалуйста, ознакомьтесь с документом о высокоточной синхронизации времени.