У меня около 20 серверов Linux в небольшой сети, и мне нужно, чтобы их часы были достаточно близко друг к другу (например, в пределах 20 мс). Я начал с того, что каждый из них был синхронизирован с europe.pool.ntp.org, и работа сделана.
Теперь у меня два вопроса:
- Являюсь ли я заметной ношей для бассейна? Т.е. имеет ли какое-либо значение для пула, если я попадаю с 20 серверов или с 2?
Учитывая, что пул постоянно нуждается в серверах в течение многих лет (см. [1]), я бы сказал, что хотя 2 или 20 серверов на самом деле не имеют значения, вы всегда должны помнить, что вы не одиноки. Так что вам лучше подумать, скажем, о 1000 администраторов, в этом случае мы говорим о 2000 или 20000 серверах, и это делает Сделать разницу.
- Если это имеет значение, то какая установка / конфигурация будет поддерживать синхронизацию моей подсети и пула при небольшой нагрузке?
Вы должны синхронизировать два [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 тысяч в основном ненужных запросов, и в какой-то момент это станет заметным.