NTP: Быстрая сходимость
Источник: https://blog.sbog.ru/posts/ru/2015/Apr/06/ntp_quick.html
Часто я сталкиваюсь с непониманием того, как работает NTP и что делать, если нужна быстрая сходимость времени на сервере. Ниже я покажу конфиг ntp.conf
с объяснениями опций, указанных в нем.
Итак, ntp.conf
:
tinker panic 0 stepout 5 server 0.pool.ntp.org minpoll 3 maxpoll 9 iburst server 1.pool.ntp.org minpoll 3 maxpoll 9 iburst server 2.pool.ntp.org minpoll 3 maxpoll 9 iburst server 3.pool.ntp.org minpoll 3 maxpoll 9 iburst server 0.centos.pool.ntp.org minpoll 3 maxpoll 9 iburst server 1.centos.pool.ntp.org minpoll 3 maxpoll 9 iburst server 2.centos.pool.ntp.org minpoll 3 maxpoll 9 iburst
Базово - это все опции, которые нужны, чтобы время сошлось максимально быстро. Что каждая из них значит в отдельности:
tinker panic 0 - по умолчанию, если время на серверах, к которым вы обращаетесь, различается с локальным временем более, чем на 300 секунд, ntpd не запустится. Данная опция отключает такое поведение, разрешая нам делать settimeoftheday() на любое время
stepout 5 - если у вас установлена опция panic 0, сервер запущен, но он обнаруживает, что время вышестоящих серверов отличается от его времени более, чем на 0.128 секунд, он не синхронизирует его сразу. Он выжидает таймаут stepout, который по умолчанию равен 900 секунд и только после этого синхронизирует время, если различие все еще велико. Выставление этого параметра в 5 секунд дает нам возможность синхронизировать время, не выжидая такого большого интервала.
minpoll 3 - ntpd отправляет пакеты на вышестоящие сервера с определенным интервалом, равным 2*n, где n по умолчанию равен 6. Чтобы принять решение о синхронизации, ntpd должен получить ответ на 8 отправленных пакетов, что означает, что такое решение по дефолту будет принято через 8 минут.
maxpoll 9 - этот интервал не статичен, да. Он лежит в диапазоне от minpoll до maxpoll, где maxpoll по умолчанию равен 10. Нет смысла сильно занижать этот параметр.
iburst - в случае, если с сервером не удается установить соединение с первого раза, пакеты будут пересылаться быстрее (часто пишут, что отправятся сразу все 8, но это не так - отправляться они будут с интервалом в 2 секунды).
Несложно посчитать, за какое время ntpd синхронизируется с вышестоящими серверами в поставке по умолчанию. Если все хорошо, это случится за 8*2^6=8 минут. Если же все пойдет чуть хуже и время на вышестоящих серверах будет нас обманывать, то это случится за 8*2^6+900=23 минуты.
Также несложно посчитать результат нашей оптимизации. Лучшее время сходимости (при условии, что ваше время и так не было идеальным) - 8*2^3=1 минута. Худшее - 8*2^3+5=1 минута 5 секунд. Результат улучшился в разы, хотя мы и протеворечим некоторым рекомендациям по настройке.
Обсуждение