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

Правильная конфигурация NTP для нескольких серверов

У меня около 20 серверов Linux в небольшой сети, и мне нужно, чтобы их часы были достаточно близко друг к другу (например, в пределах 20 мс). Я начал с того, что каждый из них был синхронизирован с europe.pool.ntp.org, и работа сделана.

Теперь у меня два вопроса:

  1. Являюсь ли я заметной ношей для бассейна? Т.е. делает ли это что-нибудь заметный разница в пуле, если я попадаю с 20 серверов или с 2?
  2. Если это имеет значение, то какая установка / конфигурация будет поддерживать синхронизацию моей подсети и пула при небольшой нагрузке? Есть рекомендации для огромных сетей (http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101) но я не нашел ни одного для небольших сетей.
  1. Являюсь ли я заметной ношей для бассейна? Т.е. имеет ли какое-либо значение для пула, если я попадаю с 20 серверов или с 2?

Учитывая, что пул постоянно нуждается в серверах в течение многих лет (см. [1]), я бы сказал, что хотя 2 или 20 серверов на самом деле не имеют значения, вы всегда должны помнить, что вы не одиноки. Так что вам лучше подумать, скажем, о 1000 администраторов, в этом случае мы говорим о 2000 или 20000 серверах, и это делает Сделать разницу.

  1. Если это имеет значение, то какая установка / конфигурация будет поддерживать синхронизацию моей подсети и пула при небольшой нагрузке?

Вы должны синхронизировать два [2] сервера в вашей сети с пулом (назовем их Первичные серверы NTP), а затем синхронизируйте все остальные серверы с этими двумя. Этот метод также имеет то преимущество, что время между всеми вашими серверами будет более точно согласовано (менее 1 мс). Это в соответствие лучшим практикам IETF.

1) Конфигурация для основных серверов NTP

Заменить server и restrict строки вашего ntp [d] .conf следующим образом, а для остальных оставьте значения по умолчанию для вашего дистрибутива [3]:

peer 10.11.12.1  iburst
#      ^^^^^^^^^^^
#      The LAN IP of the _other_ Primary NTP server 
server 0.europe.pool.ntp.org 
server 1.europe.pool.ntp.org 
server 2.europe.pool.ntp.org 
server 3.europe.pool.ntp.org 
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Обратите внимание, что эта конфигурация также позволяет хостам со всего Интернета запрашивать время вашего хоста с помощью запросов NTP. Используйте свой брандмауэр если не хочешь. В моем примере 10.11.12.1 и 10.11.12.2 - это IP-адреса основных серверов NTP (у них есть две сетевые карты, одна из которых выходит в общедоступный Интернет, а другая - в локальную подсеть 10.11.12.x). Каждый первичный сервер NTP имеет другой, объявленный как одноранговый (одноранговый узел в основном означает и сервер, и клиент - вы используете другой хост как источник времени, а другой хост также использует вас как источник времени). Так настроить IP на 1-й строке так что конфигурация каждого первичного сервера NTP указывает на другой как коллега. См. [4] относительно моего выбора использовать 4 сервера.

2) Конфигурация для всех остальных серверов

2А) Если у вас два сетевых интерфейса

Лучше использовать второй интерфейс для создания локальной подсети (например, 10.11.12.0/24) и используйте это для запросов NTP. В этом случае ограничительные линии могут быть более жесткими. Так что снова замените server и restrict строки вашего ntp [d] .conf следующим образом, а для остальных оставьте значения по умолчанию для вашего дистрибутива [3]:

restrict -4 default ignore
restrict -6 default ignore
restrict 10.0.0.0 mask 255.0.0.0 kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

2Б) Если у вас нет двух сетевых интерфейсов

Вы должны использовать следующие строки ограничения (и прочитать примечание об использовании вашего брандмауэра для блокировки доступа к вашим серверам NTP выше). Так что снова замените server и restrict строки вашего ntp [d] .conf следующим образом, а для остальных оставьте значения по умолчанию для вашего дистрибутива [3]:

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

# Only use our Primary NTP Servers
server 10.11.12.1 iburst
server 10.11.12.2 iburst
#      ^^^^^^^^^^
#      The IPs of your 2 Primary NTP Servers

Ноты

[1] С 2006 по 2012 год они постоянно просят присоединиться к другим серверам: 2006 г. просьба, 2009 г. один и тот 2012 г. один. Проверьте www.pool.ntp.org для обновления текущего статуса.

[2] Два основных сервера NTP предлагаются только как простой способ обеспечения избыточности без сложных механизмов обеспечения высокой доступности. Вы можете выбрать 3 или 4 по другим причинам (еще раз прочтите Лучшие практики IETF)

[3] На практике, независимо от вашего дистрибутива, единственное, что вам нужно включить в конфигурацию ntpd, - это строка, определяющая каталог для размещения дрейфового файла и его имя - например, driftfile /var/lib/ntp/ntp.drift. Я тестировал свое решение в CentOS, Debian и Ubuntu. Думаю, это работает в большинстве других дистрибутивов.

[4] Я настроил 4 сервера пула после лучшие практики. Технически допустимо конфигурирование более 4 серверов, но вы увеличите нагрузку на пул NTP для сомнительного увеличения доступности, так что не делайте этого. В лучших практиках я вижу, что "начиная с ntp-4.2.6, директива pool будет создавать" достаточно "ассоциаций для обеспечения надежного обслуживания времени" поэтому, если вы используете .pool. адреса, как я здесь, и ntp> = 4.2.6, точное количество строк сервера, вероятно, не имеет значения.

Rant Ой! Ненавижу NTP (вот только мне нравится, что он работает). Официальная документация полна устаревшей информации, и у них есть "как мне ее использовать?" информация, смешанная с научными подробностями о внутреннем устройстве. И еще я ненавижу как restrict 127.0.0.1 действительно означает allow everything for 127.0.0.1


История обновлений

Я удалил iburst параметр из конфигурации локальных серверов NTP, потому что их дружелюбие к пулу является спорным. (см. комментарии). Их удаление добавляет всего пару минут ожидания к первый синхронизация.


Кредиты

Комментарии и ответы пользователей SF Марки и Свена послужили хорошей отправной точкой для этого ответа. Спасибо им обоим. Кроме того, благодаря пользователю SF BACON через много лет была исправлена ​​серьезная ошибка (закон ндему: «при достаточном количестве глаз и бесконечном времени все ошибки мелкие»)

Обычный подход для этого - использовать многоуровневую настройку - вы синхронизируете один или два сервера в своей сети с пулом, а затем используете их в качестве местного источника времени. Эти уровни называются слои на жаргоне NTP.

Также подумайте об этом: если вы сделаете это так, как вы описали, это не будет действительно заметно, но если это начнется с 1000 сайтов вашего размера, вы получите 20 тысяч в основном ненужных запросов, и в какой-то момент это станет заметным.

Читать http://en.wikipedia.org/wiki/Network_Time_Protocol