Назад | Перейти на главную страницу

Как синхронизировать время на нескольких серверах

Я хочу, чтобы кластер серверов имел одно и то же время. Все используют часовой пояс UTC.

Используя в настоящее время NTP, я все еще вижу, что они, кажется, отключены на 10-20 миллисекунд каждый.

Как лучше всего получать их в точное время?

Подключение вашего ntpd к NTP-серверам за пределами вашей локальной сети для синхронизации времени может привести к наблюдаемым вами несоответствиям, потому что каждое соединение должно будет проходить через несколько маршрутизаторов, каждый с непредсказуемыми задержками в зависимости от трафика. Если каждый сервер подключается сам по себе, время между всеми серверами немного изменится.

Чтобы избежать несогласованности, лучше всего создать локальный сервер NTP, синхронизировать время с внешним пулом серверов NTP и использовать этот локальный сервер NTP в качестве «главных часов» для ваших локальных серверов:

  1. Локальный NTP-сервер

    Вы настраиваете этот сервер для синхронизации с NTP-сервером в географически близком к вам пуле. На этот сайт вы можете получить список серверов и выбрать ближайший к вам. Это позволит синхронизировать время с ними.

  2. NTP Daemon на ваших серверах

    Настройте ntpd на каждом сервере для подключения к локальному серверу NTP. Поскольку вы поддерживаете локальный сервер NTP в последней локальной сети с низкой задержкой, перекос будет минимальным.

Используя эту реализацию, время на ваших серверах будет синхронизироваться друг с другом.

Как отмечали другие, локальный сервер NTP, который синхронизируется с общедоступным и обеспечивает службу с низкой задержкой для других ваших серверов, вероятно, будет лучшим, что вы можете сделать.

Вы можете получить очень точную внешнюю синхронизацию от GPS, если видите небо, но это часто непрактично.

Я подозреваю, что если у вас возникли проблемы, у вас есть одна из двух проблем: либо вы опрашиваете NTP (например, ntpdate из cron) вместо запуска локального демона, либо ваша проблема на самом деле связана с тестированием и задержкой в ​​вашей сети, и ваши серверы могут быть лучше синхронизированы, чем вы думаете.

  1. Думали ли вы о переходе с NTP на PTP? http://en.wikipedia.org/wiki/Precision_Time_Protocol
  2. Если вы не можете отказаться от NTP, возможно, вам поможет многоадресная рассылка. http://doc.ntp.org/4.1.1/confopt.htm

В любом случае, одна из очевидных вещей, которые нужно сделать правильно - это качественный источник времени. Либо получите свой собственный GPS-приемник и / или атомные часы в вашем центре обработки данных, либо подключитесь к нескольким внешним часам уровня 0. Дальнейшая стратегия немного неопределенна. Вы никогда не знаете, какие часы в Интернете предоставляют его как слой 0, они могут быть любыми, от действительно хороших часов до дедушкиных тиков.

p.s. Использовать ntpq -c peers чтобы увидеть уровень часов, к которым вы подключаетесь. Подробнее об отладке см. http://www.clock.org/ntp/debug.html