Приветствую!
Есть задача настроить отказоустойчивый кластер из трех нод на Proxmox. В качестве хранилища данных решено использовать Ceph на тех же трех нодах. Для него необходимо настроить синхронизацию времени так, чтобы разница между нодами не превышала 50 мс (это к вопросу зачем мне такая точность).
Внутренняя сеть 192.168.0.0/22.
Имеем отдельный сервер Debian 9 (vt-gate) с настроенным ntpd:
/etc/ntp.confdriftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntpd.log
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
pool 0.ru.pool.ntp.org iburst
pool 1.ru.pool.ntp.org iburst
pool 2.ru.pool.ntp.org iburst
pool 3.ru.pool.ntp.org iburst
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 0.ru.pool.ntp.org
restrict 1.ru.pool.ntp.org
restrict 2.ru.pool.ntp.org
restrict 3.ru.pool.ntp.org
restrict 192.168.0.0 mask 255.255.252.0 nomodify notrap
Так как у меня нет лишних "железок", тестовый стенд представляет собой три виртуальных машины под управлением Proxmox 5 с таким же Proxmox на борту. Адреса внутренней сети нод 192.168.3.11, 192.168.3.12, 192.168.3.13.
/etc/ntp.confdriftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntpd.log
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server vt-gate.crb.local iburst prefer
#Для первой ноды
peer 192.168.3.12 iburst
peer 192.168.3.13 iburst
#Для второй ноды
#peer 192.168.3.11 iburst
#peer 192.168.3.13 iburst
#Для третьей ноды
#peer 192.168.3.11 iburst
#peer 192.168.3.12 iburst
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict ::1
restrict vt-gate.crb.local
#Для первой ноды
restrict 192.168.3.12
restrict 192.168.3.13
#Для второй ноды
#restrict 192.168.3.11
#restrict 192.168.3.13
#Для третьей ноды
#restrict 192.168.3.11
#restrict 192.168.3.12
restrict 192.168.0.0 mask 255.255.252.0 nomodify notrap
Идея такова, что все ноды синхронизируются с vt-gate, но в случае его недоступности ноды синхронизируются между собой, чтобы не получить разницу больше 50 мс.
Так вот это не работает. Судя по ntpq -p разница может составлять вплоть до секунд.
Подскажите как все это правильно готовить?
Спасибо.
P.S. Еще по не понятной причине ноды не пишут логи в /var/log/ntpd.log (нет доступа), хотя ntp запускается под root.
UDP 0:
Вспомнилось из предыдущих экспериментов, что при синхронизации только с vt-gate Ceph на время не ругался, но стоило добавить еще один источник синхронизации (другой локальный сервер под Windows), так сразу появлялось расхождение.
UDP 1:
Вспомнил про systemd-timesyncd. По идее он должен быть выключится после установки ntp, но на всякий случай произвел следующие манипуляции для его отключения:
# cp /lib/systemd/system/pve-cluster.service /etc/systemd/system/pve-cluster.service
В файле /etc/systemd/system/pve-cluster.service изменил
Wants=systemd-timesyncd.service
на
Wants=ntp.service
# systemctl daemon-reload
Проверил systemctl status systemd-timesyncd пишет Active: inactive (dead).
Пока ntpq -p выдает расхождение между нодами не более 27мс:
root@vt-test-pve03:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
+192.168.3.11 192.168.0.4 3 s 106 512 373 0.165 0.027 0.015
+192.168.3.12 192.168.0.4 3 s 446 512 367 0.174 0.022 0.033
*vt-gate.crb.loc 192.36.143.130 2 u 247 512 377 0.183 -0.003 0.053