На одном из проектов где структуры базы строилась на master -> slave0 -> slave1 сервера, понадобилось время синхронизировать ибо оно сбивалось часто.
Штатным, системным демоном сделал ntpd.
Ntpd уже установлен в базовой системе FreeBSD.
Добавим в авто загрузку нашего демона
# nano /etc/rc.conf ntpd_enable="YES"
Проверяем на доступности точки синхронизации времени.
# ntpdate -q ntp.ix.ru server 194.190.168.1, stratum 1, offset -0.020765, delay 0.07323 19 Feb 20:18:26 ntpdate[25639]: adjust time server 194.190.168.1 offset -0.020765 sec
Приведем наш конфигурационный файл к такому виду на всех серверах базы кластера.
# egrep -v '#|^$' /etc/ntp.conf server ntp.ix.ru iburst maxpoll 9 prefer server ntp2.aas.ru iburst maxpoll 9 server 0.freebsd.pool.ntp.org iburst maxpoll 9 logfile /var/log/ntp.log # запрещаем всем обмениваться с нами данными restrict default ignore # разрешаем локальному хосту и серверам которые выше расположены. restrict localhost restrict ntp.ix.ru restrict ntp2.aas.ru restrict 0.freebsd.pool.ntp.org
Не сложная настройка, prefer указывает приоритетность сервера.
iburst ускоряет синхронизацию.
ntp.ix.ru и ntp2.aas.ru две точки синхронизации времени.
0.freebsd.pool.ntp.org пул синхронизации.
restrict default ignore запрещаем от нас брать синхронизацию.
Проверяем проделанную работу.
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp.ix.ru .GPS. 1 u 59 64 377 47.866 10.595 0.898 +ntp2.aas.ru .GPS. 1 u 195 64 374 37.953 13.761 1.414 +server.gigelf.f 145.238.203.10 3 u 64 64 377 6.293 15.401 1.287
remote — Имя удаленного сервер. refid — С этим сервером в данный момент происходит синхронизация. st — Stratum (уровень) удаленного сервера. 1 высокий, эти сервера для вычисления времени используют специальное оборудование, 16 обычная компьютер клиента. t — Режим работы сервера: u unicast, b broadcast, m multicast, - manycast. when — Время прошедшее с последнего момента ответа сервера в секундах или - если сервер ни разу не ответил. poll — Интервал синхронизации сервера в секундах. reach — Состояние доступности сервера, значение стабилизируется на уровне 377 после 8 последних удачных попыток. delay — Задержка ответа сервера. offset — Различие локального (системного) времени и времени на удаленном сервере. jitter — Показывает смещение времени на удаленном сервере. * — В настоящий момент с этим сервером выполняется синхронизация времени. + — Пригодный для обновления сервер. # — Отобранный сервер слишком далеко для синхронизации времени. x — Некорректный сервер ( не отвечает на запросы ). ο — Сервер добавлен в список для синхронизации используя сигнал PPS. - — Плохой сервер, отвергнут по каким-то причинам. . — Сервер выбран с конца списка синхронизаций.
Проверим доступность для локальной синхронизацию.
# ntpdate -q 127.0.0.1 server 127.0.0.1, stratum 2, offset 0.000004, delay 0.02563 20 Feb 09:05:43 ntpdate[48420]: adjust time server 127.0.0.1 offset 0.000004 sec
Система.
# uname -rms FreeBSD 11.2-RELEASE-p9 amd64
Вот и вся реализация в системе freebsd ntpd синхронизация времени.