Я хочу, чтобы кластер серверов имел одно и то же время. Все используют часовой пояс UTC.
Используя в настоящее время NTP, я все еще вижу, что они, кажется, отключены на 10-20 миллисекунд каждый.
Как лучше всего получать их в точное время?
Подключение вашего ntpd к NTP-серверам за пределами вашей локальной сети для синхронизации времени может привести к наблюдаемым вами несоответствиям, потому что каждое соединение должно будет проходить через несколько маршрутизаторов, каждый с непредсказуемыми задержками в зависимости от трафика. Если каждый сервер подключается сам по себе, время между всеми серверами немного изменится.
Чтобы избежать несогласованности, лучше всего создать локальный сервер NTP, синхронизировать время с внешним пулом серверов NTP и использовать этот локальный сервер NTP в качестве «главных часов» для ваших локальных серверов:
Локальный NTP-сервер
Вы настраиваете этот сервер для синхронизации с NTP-сервером в географически близком к вам пуле. На этот сайт вы можете получить список серверов и выбрать ближайший к вам. Это позволит синхронизировать время с ними.
NTP Daemon на ваших серверах
Настройте ntpd на каждом сервере для подключения к локальному серверу NTP. Поскольку вы поддерживаете локальный сервер NTP в последней локальной сети с низкой задержкой, перекос будет минимальным.
Используя эту реализацию, время на ваших серверах будет синхронизироваться друг с другом.
Как отмечали другие, локальный сервер NTP, который синхронизируется с общедоступным и обеспечивает службу с низкой задержкой для других ваших серверов, вероятно, будет лучшим, что вы можете сделать.
Вы можете получить очень точную внешнюю синхронизацию от GPS, если видите небо, но это часто непрактично.
Я подозреваю, что если у вас возникли проблемы, у вас есть одна из двух проблем: либо вы опрашиваете NTP (например, ntpdate из cron) вместо запуска локального демона, либо ваша проблема на самом деле связана с тестированием и задержкой в вашей сети, и ваши серверы могут быть лучше синхронизированы, чем вы думаете.
В любом случае, одна из очевидных вещей, которые нужно сделать правильно - это качественный источник времени. Либо получите свой собственный GPS-приемник и / или атомные часы в вашем центре обработки данных, либо подключитесь к нескольким внешним часам уровня 0. Дальнейшая стратегия немного неопределенна. Вы никогда не знаете, какие часы в Интернете предоставляют его как слой 0, они могут быть любыми, от действительно хороших часов до дедушкиных тиков.
p.s. Использовать ntpq -c peers
чтобы увидеть уровень часов, к которым вы подключаетесь. Подробнее об отладке см. http://www.clock.org/ntp/debug.html