четверг, 6 декабря 2012 г.

проверка работы live_syncd (Zimbra)

Исходные данные:
  • На "зеркальном"  сервере zmirror имеем запущенный процесс создания полной копии каталога. (live_syncd) == скрипт 1
  • В системе запущен процесс по расписанию cron каждые 10 минут создающий дубликат сетевой конфигурации "live" сервера. (runbackup) == скрипт 2

Задача:

Необходимо проверять эти каждые 10 минут запуска скрипта 2 работу скрипта 1, если скрипт запущен то записать сообщение о выполнении работы, если скрипт 1 не выполняется то записать в лог скрипта 2 сообщение о  остановке скрипта 1.



Если скрипт 1 не работает то запустить его:
  • Под root: /home/vv/ipconf/./live_sync_start
  • Под zimbra: /opt/zimbra/live_sync/./live_syncd  


 Алгоритм:
  1. Если процесс запущен --> запись в лог (+)
  2. Если процесс не запущен --> запись в лог (-)
  3. ?? Если не запущен  --> запускаем --> проверяем --> запись в лог (+)
FAQ:
Выполнение:

 Скрипт live_syncd  запускает 2 процесса:  (исходя из тела скрипта)
  • redo_log_live_sync
  • ldap_live_sync
находим их:
 ps aux | grep "redo_log_live_sync"
 ps aux | grep "ldap_live_sync"
 Тело скрипта показало что при запущенных этих процессах  создаются файлы с указанием номера процесса в папке ../live_sync/pid/
При выключенном процессе папка пуста.
PID файлы при запущенном процессе 1 (live_syncd)
  • ldap_live_sync.pid
  • redo_log_live_sync.pid
Проверка на существования файла в заданной дериктории (пример)
 #!/bin/bash
FILE="/home/other/testfile"
echo "start testing file $FILE"
if ! [ -e "$FILE" ]
then echo "Файл не найден"
else echo "Файл найден"
fi

 Итого на моем случае получилось:
#Test live_syncd for workable
PID1="/opt/zimbra/live_sync/pid/ldap_live_sync.pid"
PID2="/opt/zimbra/live_sync/pid/redo_log_live_sync.pid"
if ! [ -e "$PID1" ]
then echo "WARNING! Live_syncd LDAP is not runing" >> $LOG
su root /home/vv/ipconf/./live_sync_start
else echo "Live_syncd LDAP is runing" >> $LOG
fi
#
if ! [ -e "$PID2" ]
then echo "WARNING! Live_syncd REDOLOG is not runing" >> $LOG
su root /home/vv/ipconf/./live_sync_start
else echo "Live_syncd REDOLOG is runing" >> $LOG
fi
#
echo " " >> $LOG
#
 Эпилог:
"Начали за здравие, закончили за упокой".
 Первоначальная проверка запущенности процесса не должна была закончиться  проверкой наличия файла в заданной директории, на его наличие или отсутствие..
Но будем считать что с поставленной задачей я справился.
Скрипт срабатывает каждые 10 минут проверяет конфигурацию основного сервера и его зеркала, сохраняет их в заданные директории (что в данном посте не показано), параллельно  проверяет ведется ли бэкап данных с основного (скрипт1) + в случае не работоспособности скрипта запускает его. (su root /home/vv/ipconf/./live_sync_start)

Криво, погано, но какбэ работает... 










Комментариев нет:

Отправить комментарий