Инструменты пользователя

Инструменты сайта


system:ntpd

Точность — вежливость королей

Очень многие сервисы для корректной работы требуют точности системного времени. Особенно если используется репликация. Для решения этих проблем есть специальный демон - ntpd

Итак, у нас в распоряжении следующая система

# uname -a
Linux centos5.sys-adm.local 2.6.18-194.26.1.el5 #1 SMP Tue Nov 9 12:54:40 EST 2010 i686 i686 i386 GNU/Linux

# cat /etc/redhat-release
CentOS release 5.5 (Final)

# date
Wed Dec 15 08:25:21 EET 2010

Настраиваем временную зону. Для этого достаточно создать символическую ссылку на соответствующую зону в /usr/share/zoneinfo/

# cd /etc
# ln -sf /usr/share/zoneinfo/America/New_York localtime

А также вносим изменения в файл /etc/sysconfig/clock, который отвечает за интерпретацию времени, считываемого с аппаратных часов системы.

# cat /etc/sysconfig/clock
ZONE="America/New_York"
UTC=true
ARC=false

После внесения изменений необходимо перегрузить сервер. Проверяем текущую зону

# date
Wed Dec 15 01:44:03 EST 2010

Устанавливаем сам пакет

# yum install ntp

Правим основной конфигурационный файл - /etc/ntp.conf

# cat /etc/ntp.conf
# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1

# Указываем локальную сеть, которая будет синхронизироваться с нашего сервера
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

# Сервер с которым мы будем производить синхронизацию
# Список серверов доступен по адресу http://www.pool.ntp.org/
server europe.pool.ntp.org

Запускаем сам демон

# service ntpd start
Starting ntpd:                                             [  OK  ]

Смотрим на каких интерфейсах он слушает

# netstat -an | grep 123
udp        0      0 192.168.127.1:123          0.0.0.0:*
udp        0      0 127.0.0.1:123               0.0.0.0:*
udp        0      0 0.0.0.0:123                 0.0.0.0:*

Если ничего не получаем, смотрим сообщение в /var/log/messages

# cat /var/log/messages | grep ntpd
Dec 15 02:32:16 centos5 ntpd[3133]: ntpd [email protected] Sat Dec 19 00:58:16 UTC 2009 (1)
Dec 15 02:32:16 centos5 ntpd[3134]: precision = 1.000 usec
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface wildcard, 0.0.0.0#123 Disabled
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface wildcard, ::#123 Disabled
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface lo, ::1#123 Enabled
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface eth0, fe80::20c:29ff:fec5:2ecb#123 Enabled
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface lo, 127.0.0.1#123 Enabled
Dec 15 02:32:16 centos5 ntpd[3134]: Listening on interface eth0, 192.168.127.1#123 Enabled
Dec 15 02:32:16 centos5 ntpd[3134]: kernel time sync status 0040
Dec 15 02:32:16 centos5 ntpd[3134]: frequency initialized 0.000 PPM from /var/lib/ntp/drift

Производим ручную синхронизацию времени

# ntpdate -u europe.pool.ntp.org
15 Dec 10:02:55 ntpdate[3145]: adjust time server 79.142.192.130 offset -0.003043 sec

При этом в log-файле будут такие записи

Dec 15 10:02:00 centos5 ntpd[3134]: time reset +26790.585242 s
Dec 15 10:02:00 centos5 ntpd[3134]: kernel time sync enabled 0001

После успешной синхронизации с внешними серверами данный сервер можно использовать в качестве локального, иначе при попытке синхронизации вы будете получать следующее сообщение об ошибке

# ntpdate -u 192.168.127.1
15 Dec 17:07:06 ntpdate[30987]: no server suitable for synchronization found
system/ntpd.txt · Последние изменения: 2010/12/15 17:31 (внешнее изменение)