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

Zimbra BackUp (скрипты)

Цель:
Сохранить все написанные скрипты для удобной (для меня) работы с сервером "теплой" замены Zimbra, который является постоянно обновляемым "зеркалом" основного "живого" сервера.

Пояснение:
На   вики-сайте разработчиков есть уже написанные скрипты группы энтузиастов, которые вполне работоспособны и вполне справляются с поставленными задачами, моя задача была их вживить и создать удобные для меня инструменты для более быстрого перехода с живого сайта на зеркальный. Думаю что статья (выше указанная) написана достаточно понятно, но был момент с ssh без парольной аутентификацией, который я решал другими методами. Жалею что в то время что то подобное этому блогу я не вел. Думаю что тот метод который описывается в статье тоже вполне рабочий, скорее всего была моя ошибка в настройке.
Но факт есть факт, какими бы путями я не шел сейчас все работает.



Итак скрипты:
  1. Основной скрипт создания копии LDAP, MySQL, RedoLog  и основного каталога Zimbra (/opt/zimbra/). (live_syncd)
  2. Скрипт управления 1 скриптом (start,stop,status...) (sync_commands)
  3. Скрипт копирования сетевых настроек "live" сервера и дубликации  настроек "зеркала" (на случай обратного перехода). (runbackup)
  4. Скрипт применения настроек "live" сервера к "зеркалу". (takeNetwork_web1)
  5. Скрипт применения старых сетевых настроек "зеркала".(takeNetwork_mirror)
  6. Скрипт проверки работы 1 скрипта каждые 10 минут, ведение логов копирования сетевых настроек + занесения в логи состояния работы 1 скрипта. (runbackup)
  7. Скрипт запуска из под учетной записи root скрипта для пользователя zimbra на начало бэкапа. (live_sync_start)


1.  Основной скрипт создания копии LDAP, MySQL, RedoLog  и основного каталога Zimbra (/opt/zimbra/). (из данного мануала) - Main Script


2. Скрипт управления 1 скриптом (start,stop,status...) (из данного мануала) - Remote command Script


 3. Скрипт копирования сетевых настроек "live" сервера и дубликации  настроек "зеркала" (на случай обратного перехода). Совмещен с скриптом №6


#!/bin/bash
LOG="/home/vv/ipconf/runbackup.log"
#BackUp from LIVE SERVER
        rsync -a --progress root@LIVE SERVER_INTERNAL_IP:/etc/resolv.conf /home/vv/ipconf/ipconf_live
        rsync -a --progress root@LIVE SERVER_INTERNAL_IP:/etc/network/interfaces /home/vv/ipconf/ipconf_live
        rsync -a --progress root@LIVE SERVER_INTERNAL_IP:/etc/hosts /home/vv/ipconf/ipconf_live
        rsync -a --progress root@LIVE SERVER_INTERNAL_IP:/etc/hostname /home/vv/ipconf/ipconf_live
#BackUp from (localhost) MIRROR_SERVER
        rsync -a --progress /etc/resolv.conf /home/vv/ipconf/ipconf_mirror
        rsync -a --progress /etc/network/interfaces /home/vv/ipconf/ipconf_mirror
        rsync -a --progress /etc/hosts /home/vv/ipconf/ipconf_mirror
        rsync -a --progress /etc/hostname /home/vv/ipconf/ipconf_mirror
echo "[`date +%F-%T`] Last BackUp LAN Configuration LIVE SERVER and local setings." >> $LOG
#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
#

4. Скрипт применения настроек "live" сервера к "зеркалу".

 #!/bin/bash
LOG="/home/vv/ipconf/ipchanges.log"

#Stop copy Mirror's server IP configs to /home/vv/ipconf/ipconf_mirror
#su root /home/vv/ipconf/runbackup stop
#sleep 1
#echo -e '\E[34m'"!!!!!!BackUp Mirror's server IP config is finish!!!!!!!!!"; tput sgr0

#Stop Zimbra's sync Mirror server with LIVE SERVER
su zimbra /opt/zimbra/live_sync/./live_syncd stop
sleep 1
echo -e '\E[34m'"!!!!!!Sync with Live server is finish!!!!!!!!!"; tput sgr0

#Copy information from backup ip configuration of web1 to mirror server
FROM="/home/vv/ipconf/ipconf_live" #Take IP Configuration FROM
TO="/etc" #Put IP Configuration TO
#TO="/home/vv/test" #Test of copy

echo Take configuration from: [ $FROM ] and put to [ $TO ].

read -p "Copy [ resolf.conf ] to $TO (1\0): " REPLY
if (($REPLY == 1))
then cp $FROM/resolv.conf $TO
else ((M = M + 1))
echo File resolv.conf is NOT copy to $TO
fi
#
read -p "Copy [ interfaces ]to $TO (1\0):" REPLY
if (($REPLY == 1))
then cp $FROM/interfaces /etc/network/
else ((M = M + 1))
echo File interfaces is NOT copy to $TO
fi
#
read -p "Copy [ hosts ] to '$TO' (1\0)" REPLY
if (($REPLY == 1))
then cp $FROM/hosts $TO
else ((M = M + 1))
echo File hosts is NOT copy to $TO
fi
#
read -p "Copy [ hostname ] to $TO (1\0)" REPLY
if (($REPLY == 1))
then cp $FROM/hostname $TO
else ((M = M + 1))
echo File hostname is NOT copy to $TO
fi
#Check alarms from M
if ((M == 0))
then echo -e '\E[32m'" Ip Configs copying without any problems"; tput sgr0
else echo -e '\E[31m'"IP configs copying with $M problems"; tput sgr0
fi
#
#Reboot init.d/networking
read -p "REBOOT NETWORKING AND APPLY NEW CONFIGURATION? (1\0)" REPLY
if (($REPLY == 1))
then su root /etc/init.d/networking restart
else ((M = M + 1))
echo -e '\E[31m'"Configuration is not apply"; tput sgr0
fi

echo "[`date +%F-%T`] Taking network configuration $FROM to $TO" >> $LOG
#

 5. Скрипт применения старых сетевых настроек "зеркала".

 #!/bin/bash
LOG="/home/vv/ipconf/ipchanges.log"
#Start Zimbra's sync Mirror server with LIVE SERVER
su zimbra /opt/zimbra/live_sync/./live_syncd start
sleep 1
echo -e '\E[34m'"!!!!!!Sync with Live server is STARTED!!!!!!!!!"; tput sgr0

#Copy information from backup ip configuration of web1 to mirror server
FROM="/home/vv/ipconf/ipconf_mirror" #Take IP Configuration FROM
TO="/etc" #Put IP Configuration TO
#TO="/home/vv/test" #Test of copy

echo Take configuration from: [ $FROM ] and put to [ $TO ].

read -p "Copy [ resolf.conf ] to $TO (1\0): " REPLY
if (($REPLY == 1))
then cp $FROM/resolv.conf $TO
else ((M = M + 1))
echo File resolv.conf is NOT copy to $TO
fi
#
read -p "Copy [ interfaces ]to $TO (1\0):" REPLY
if (($REPLY == 1))
then cp $FROM/interfaces /etc/network/
else ((M = M + 1))
echo File interfaces is NOT copy to $TO
fi
#
read -p "Copy [ hosts ] to '$TO' (1\0)" REPLY
if (($REPLY == 1))
then cp $FROM/hosts $TO
else ((M = M + 1))
echo File hosts is NOT copy to $TO
fi
#
read -p "Copy [ hostname ] to $TO (1\0)" REPLY
if (($REPLY == 1))
then cp $FROM/hostname $TO
else ((M = M + 1))
echo File hostname is NOT copy to $TO
fi
#Check alarms from M
if ((M == 0))
then echo -e '\E[32m'" Ip Configs copying without any problems"; tput sgr0
else echo -e '\E[31m'"IP configs copying with $M problems"; tput sgr0
fi
#
#Reboot init.d/networking
read -p "REBOOT NETWORKING AND APPLY NEW CONFIGURATION? (1\0)" REPLY
if (($REPLY == 1))
then su root /etc/init.d/networking restart
else ((M = M + 1))
echo -e '\E[31m'"Configuration is not apply"; tput sgr0
fi
#
echo "[`date +%F-%T`] Taking network configuration $FROM to $TO" >> $LOG
#

6. Скрипт проверки работы 1 скрипта каждые 10 минут, ведение логов копирования сетевых настроек + занесения в логи состояния работы 1 скрипта. 
 - Смотреть нижнюю часть скрипта №3:
 #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
#
 7.  Скрипт запуска из под учетной записи root скрипта для пользователя zimbra на начало бэкапа. (live_sync_start)

#!/bin/bash
#
su zimbra /opt/zimbra/live_sync/./live_syncd start
sleep 1
#
LOGT="/home/vv/ipconf/runbackup.log"
#
echo "[`date +%F-%T`] Live_syncd started " >> $LOGT
#
exit
#

1 комментарий:

  1. Добрый день, прошу помощи, делаю все как в оригинальной инструкции. синхронизация по команде rsync -aHz --force --delete --sparse live_server:/opt/zimbra/ /opt/zimbra/ - успешна, а вот ./live_syncd start - Unable to identify local server address and assume remote address. Что может быть не так ?

    ОтветитьУдалить