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


9

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

Зараз у мене є два питання:

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

1
Зазвичай у вас повинен бути один або два внутрішні сервери часу, з якими ви синхронізуєте внутрішню мережу. Два внутрішніх сервера можуть мати peerстосунки. Дивіться, наприклад , ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3101
Marki

Дякуємо за коментарі та посилання Marki. Стосовно посилання зазначає, що це стосується "величезної мережі", що, безумовно, не в моєму випадку. Щодо вашої пропозиції: я не думаю, що один внутрішній сервер часу - це не дуже гарна ідея (одна точка відмови), але 2 схожі на гарну ідею. Чи можете ви пояснити, що таке відносини однолітків (або надати посилання)?
ndemou

Слід також зазначити, що я точно не є експертом з НТП - далеко не це :-)
ndemou

Не зашкодить, якщо трохи погукатися в Google про те, що таке одноліток. Зауважте, що цей сайт нічого не подає на срібній тарілці, коли люди взагалі не проводять досліджень.
Марки

Не зрозумійте мене неправильно, що я зробив домашнє завдання, але NTP - одна з цих тематик, де більшість документацій є занадто ластівкою (це ntp.conf - просто використовуйте її) або занадто глибокою (50 сторінок теорії роботи, щоб прочитати перед вами можна почати розуміти основні факти).
ndemou

Відповіді:


8
  1. Я помітний тягар для басейну? Тобто чи має це помітна різниця в пулі, якщо я потрапляю з 20 серверів або з 2?

З огляду на те, що пул протягом багатьох років постійно потребує серверів (див. [1]), я б сказав, що хоча 2 або 20 серверів насправді не мають значення, ви завжди повинні пам’ятати, що ви не самотні. Тож краще подумайте про 1000 адміністраторів. У цьому випадку ми говоримо про 2000 або 20000 серверів, і це має значення.

  1. Якщо це все-таки змінить налаштування / конфігурацію, яка дозволить тримати синхронізацію моєї підмережі та пул під невеликим навантаженням?

Ви повинні синхронізувати два [2] сервери у вашій мережі з пулом (назвемо їх первинними серверами NTP ), а потім синхронізувати всі інші сервери з цими двома. Цей метод також має перевагу в тому, що час між усіма вашими серверами буде більш узгодженим (у межах менше 1 мс). Це відповідає кращим практикам IETF .

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

Замініть serverі restrictлінії рядка ntp [d] .conf на наступне, а решту дотримуйтесь за замовчуванням у розповсюдженні [3]:

server 10.11.12.1  iburst peer
#      ^^^^^^^^^^^
#      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) Конфігурація для всіх інших серверів

2A) Якщо у вас два мережевих інтерфейсу

Краще використовувати 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

2B) Якщо у вас немає двох мережевих інтерфейсів

Вам слід скористатись наступними обмеженими лініями (і прочитати примітку про використання брандмауера для блокування доступу до ваших серверів 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. адреси, як я тут, і ntp> = 4.2.6 точна кількість ліній сервера, ймовірно, не має значення.

Rant Oh! Я ненавиджу NTP (за винятком того, що мені подобається, що він працює). Офіційна документація рясніє застарілою інформацією, і в них є "як я її використовую?" інформація, змішана з науковими подробицями про внутрішні організації. І я також ненавиджу, як restrict 127.0.0.1насправді це означаєallow everything for 127.0.0.1


Історія оновлень

Я вилучив цю iburstопцію з конфігурації локальних серверів NTP, оскільки їх привітність до пулу є дискусійною. (див. коментарі). Видалення їх додає лише пару хвилин часу очікування до першої синхронізації.


Кредити

Коментарі та відповіді користувачів SF Маркі та Свен послужили хорошою відправною точкою для цієї відповіді. Дякую обом.


1
+1 від мене. Я запускаю сервер пулу, і я не можу переоцінити правильність цієї публікації, за винятком того, що iburstце дратівливий параметр для використання на загальнодоступних серверах, тому, будь ласка, не робіть це (хоча це не так, як дратує burst). Адміністратори сервера в басейні роблять вам послугу, не знаючи, хто ви є, і не відплачуючи собі, виключно для кращого керування Інтернетом. Якщо ви, доклавши зусиль, можете полегшити їхнє життя, ви зобов’язані їм це зробити.
MadHatter

Дякую MadHatter. Щодо iburst, я вважав, що це нормально для типових серверів "завжди на". Чи є у вас посилання на підтримку вашої поради щодо використання цієї опції? (Я перевірив www.pool.ntp.org/en/use.html, а також googled протягом 10 хв, але не знайшов нічого переконливого)
ndemou

Я із задоволенням поділюсь своєю статистикою руху; Швидкий зразок говорить про те, що неправильно налаштовані хости, тобто хости, які передають частіше одного разу на хвилину, становлять близько 45% моїх клієнтів, але несуть близько 75% трафіку. Це здебільшого буде з серверів, які використовують burst, але навіть iburstкаже (зі ntpdсторінки man) " при такому варіанті обмін повідомленнями обмінюється, щоб обробляти дані та встановлювати годинник приблизно на 10 секунд ". Використовуючи iburstсказане, " швидке встановлення мого годинника важливіше, ніж низьке навантаження на ваш сервер ", і це нечесно.
MadHatter

Ви маєте рацію щодо "залпу повідомлень", але, наскільки я можу зрозуміти, цей сплеск відбудеться лише під час запуску демона NTP і (можливо), якщо сервер пулу на мить недоступний (я з початкового). Ось конспект зі сторінки вікі NTPd Arch Arch: "Рекомендується параметр iburst і надсилає пакет пакетів, лише якщо він не може отримати з'єднання з першої спроби. Параметр" burst "завжди робить це, навіть з першої спроби, і ніколи не слід використовувати без явного дозволу і може призвести до чорного списку ".
ndemou

Ви маєте рацію, що iburstнабагато менше заперечень, ніж burst. Моя думка полягає в тому, що коли ви користуєтесь чужим ресурсом безкоштовно, є аргумент, що вам слід згорнутись назад, щоб бути уважними; може бути думкою, що недостатньо активна неуважність. Я погоджуюсь, що це вважається найкращою практикою, але ці документи не враховують, є серверами висхідного потоку, з якими ви синхронізуєтесь, частиною вашого підприємства; вони диктують найкращу технічну практику (яку, я погоджуюся, використовувати iburst), а не найкращу соціальну практику.
MadHatter

6

Звичайний підхід для цього полягає у використанні багаторівневої установки - ви синхронізуєте один або два сервери у вашій мережі з пулом, а потім використовуєте їх як локальне джерело часу. Цей рівень називається шарами в NTP lingo.

Крім того, подумайте про це: якщо ви зробите це так, як описано, це буде не дуже помітно, але якщо 1000 сайтів вашого розміру починаються з цього, ви отримуєте в основному 20 к. Зайвих запитів і в якийсь момент це стає помітним.

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


Але врахуйте альтернативну точку зору - ще двадцять клієнтів понад мільйони існуючих клієнтів навряд чи є.
200_успіх

2
Як він сказав, якщо всі почнуть так думати ...
Маркі

Але на якому етапі ви зупиняєтесь? Подумайте про всі пристрої класу Linksys, які постачаються заздалегідь налаштованими для використання pool.ntp.org. Напевно DNS-трафік перевищує трафік NTP. Чи потрібно також кешувати DNS на локальному рівні? Навіть трафік DNS, ймовірно, буде незначним порівняно з рештою споживання вашої пропускної здатності.
200_успіх

@ 200_success: Це не варто обговорювати, але більшість пристроїв класу "Linksys" дійсно кешують DNS-трафік локально, і вони запитують свій DNS-провайдер ISP, який кешується ...
Sven

1
Якщо Linksys постачає пристрої, які синхронізуються з ntp.pool.orgними, порушують умови пулу ; якщо вони зробили це належним чином, подавши заявку на зону постачальника (див. посилання), тоді, як очікується, вони також будуть брати участь у проекті пулу пропорційно їхньому навантаженню (знову ж див. посилання).
MadHatter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.