У меня группа серверов находится в нескольких дата-центрах. Все они должны быть синхронизированы, чтобы у них было одинаковое время, а в идеале также должно быть правильное время.
Что лучше - синхронизировать их все с одними и теми же серверами, независимо от географии, или лучше синхронизировать их с близкими серверами?
Я бы предпочел настроить клиентов на использование более близких серверов NTP по двум причинам:
Вы можете поддерживать правильность локальных серверов NTP либо через несколько опорных серверов, либо через источник времени, такой как приемник GPS. Правильность на каждом сайте гарантирует одинаковое время на каждом сайте.
Это немного зависит от ваших требований к точности и того, как ваши серверы отслеживают время и интерпретируют данные NTP. Полная реализация NTP, направленная на сохранение точного времени, - это удивительно научная вещь. Существуют упрощенные реализации, которые в основном отбрасывают большую часть внутренней обработки и коррекции промежуточного смещения и «просто синхронизируются с указанным временем» - это называется S (подразумеваемый) NTP.
Если у вас есть полноценные реализации NTP, в основном не будет иметь значения, с какими серверами вы синхронизируете время - если вы можете доверять большинству из них, чтобы они имели точное время, алгоритмы сравняют проблемы с перекосом и задержкой, поэтому отклонение часов будет в пределах диапазон нескольких миллисекунд.
Если у вас есть только SNTP и вы хотите «в одно и то же время», вам, вероятно, лучше всего посоветовать запустить собственный сервер (ы) NTP и синхронизировать с ними другие машины центра обработки данных. Даже реализации SNTP должны измерять время прохождения сети и принимать его во внимание перед установкой часов, поэтому, если у вас нет сильно различающихся задержек на ваших ссылках или действительно плохие часы в вашем оборудовании, значения также должны быть в пределах миллисекунд.