The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Окончательное решение проблемы ntpd/dovecot"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Загрузка / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Окончательное решение проблемы ntpd/dovecot"  +1 +/
Сообщение от DeadLoco (ok) on 21-Мрт-11, 15:59 
Как известно, dovecot (да и многие другие сервисы) весьма чувствительны к точному времени. В частности, если ntpd начинает переводить стрелки, dovecot тут же умирает с воплями 'time went backward'.

Главная проблема заключается в том, что при загрузке FreeBSD система rc-скриптов задает очередность запуска демонов, но не гарантирует, что к моменту запуска последующего демона предыдущий выйдет на штатный режим. В частности, ntpd честно запускается ранее, чем dovecot, но далеко не всегда успевает выставить время. Обычно, ко времени запуска довекота, он даже не успевает со всеми серверами из пула пообщаться. Как результат - переводить стрелки ntpd начинает тогда, когда dovecot уже вовсю работает. Итог понятен.

Поскольку проблема заключена не в ntpd или dovecot, а в rc-скриптах, решение сделано средствами rc-скриптов:

-------------------8<-----------------------------
#!/bin/sh
#
# PROVIDE: ntpwait
# REQUIRE: ntpd
# BEFORE:  LOGIN

# Place that file into /usr/local/etc/rc.d/ntpwait.sh
# Extension '.sh' is mandatory
# Add 'ntpwait_enable="YES"' to the /etc/rc.conf
# Add 'ntpwait_flags="120"' to set delay in seconds

. /etc/rc.subr

name="ntpwait"
rcvar=`set_rcvar`
command="/bin/sleep"
: ${ntpwait_flags="30"}

load_rc_config $name
run_rc_command "$1"
#
-------------------8<-----------------------------

Данный скрипт приостанавливает запуск прочих rc-скриптов сразу после запуска ntpd, чтобы дать ему время отчехлиться. Если дефолтных 30 сек вам покажется мало, можете флагами задать нужное время.
Еще раз обращаю внимание: файл скрипта должен иметь расширение .sh, хотя большинство скриптов, там лежащих, его не имеют. Так надо.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Окончательное решение проблемы ntpd/dovecot"  +/
Сообщение от sdog (ok) on 21-Мрт-11, 16:22 
А если так - сначала запустить ntpdate, сделать начальную синхронизацию, а затем запускать сам ntpd? Вроде, так делается при запуске ntpd в шапке.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Окончательное решение проблемы ntpd/dovecot"  +/
Сообщение от DeadLoco (ok) on 21-Мрт-11, 16:30 
> А если так - сначала запустить ntpdate, сделать начальную синхронизацию, а затем
> запускать сам ntpd? Вроде, так делается при запуске ntpd в шапке.

В настоящее время ntpdate считается устаревшим, и взамен него предлагается запускать ntpd с флагом -g (или ntpd_sync_on_start="YES"). В любом случае не гарантируется, что точное время будет выставлено до запуска чувствительных ко времени софтов.

Собственно, до определенного момента я успешно пользовался ntpd_sync_on_start, пока мне в работу не попала машинка, у которой из-за дефекта кварца время биоса убегает вперед на 15-20 сек в сутки. При этом даже крупношаговый перевод стрелок в стиле ntpdate занимает у ntpd заметное время. Заметно большее, чем остается до запуска довекота.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Окончательное решение проблемы ntpd/dovecot"  +/
Сообщение от artemrts (ok) on 21-Мрт-11, 21:16 
>[оверквотинг удален]
> : ${ntpwait_flags="30"}
> load_rc_config $name
> run_rc_command "$1"
> #
> -------------------8<-----------------------------
> Данный скрипт приостанавливает запуск прочих rc-скриптов сразу после запуска ntpd, чтобы
> дать ему время отчехлиться. Если дефолтных 30 сек вам покажется мало,
> можете флагами задать нужное время.
> Еще раз обращаю внимание: файл скрипта должен иметь расширение .sh, хотя большинство
> скриптов, там лежащих, его не имеют. Так надо.

Спасибо. Ну это можно в рубрику "Советы" отправить.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Окончательное решение проблемы ntpd/dovecot"  +/
Сообщение от groggy on 22-Мрт-11, 06:17 
>>Так надо.

А почему так надо?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Окончательное решение проблемы ntpd/dovecot"  +/
Сообщение от DeadLoco (ok) on 22-Мрт-11, 11:02 
>>>Так надо.
> А почему так надо?

Потому что скрипты без расширения запускаются главным шеллом в бекграунде, а с расширением - внутри основного потока главного шелла.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру