Окунев Дмитрий Юрьевич

Updated for clsync-0.4

... ... @@ -12,15 +12,17 @@
Решение достаточно простое:
ionice -c 3 clsync --exit-on-no-events=1 --max-iterations=20 --exit-hook=/root/stop-here-start-there.sh --mode=rsyncshell --ignore-exitcode=23 --retries=3 -W /var/www -S /root/rsync.sh -L /dev/shm/clsync
Далее создаём /root/rsync.sh примерно следующего содержания:
exec rsync --password-file="/root/rsync.pass" -aHv --timeout=3600 --delete-before --exclude-from="$4" --include-from="$3" --exclude='*' /var/www/ rsync://clsync@другой_узел/var/www/ 2>/tmp/clsync-rsync-"$LABEL"-brother.err
ionice -c 3 clsync --exit-on-no-events=1 --max-iterations=20 --pre-exit-hook=/root/stop-here.sh --exit-hook=/root/start-there.sh --mode=rsyncdirect --ignore-exitcode=23,24 --retries=3 -W /var/www -S rsync -L /dev/shm/clsync -- %RSYNC-ARGS% /var/www/ rsync://clsync@другой_узел/var/www/
clsync произведёт полную синхронизацию, после чего будет отлавливать изменения на файловой системе внутри «/var/www» и производить досинхронизации только по нужным файлам/директориям. Досинхронизации прекратятся как только будет нéчего синхронизировать (за время последней досинхронизации ничего не изменилось) или завершится 20-ая итерации синхронизации (чтобы процесс не длился вечно).
После окончания синхронизаций clsync запустит скрипт «/root/stop-here-start-there.sh». Предполагается, что в данном скрипте будет описан сценарий остановки сервисов на старом узле и их запуска на новом узле. Таким образом downtime будет минимизирован.
Перед последней итерацией синхронизации clsync запустит скрипт «/root/stop-here.sh». Преподалается, что в данном скрипте будет производиться остановка сервиса на данном сервере (например «/etc/init.d/apache2 stop»).
А уже после последней итерации синхронизации clsync запустит скрипт «/root/start-there.sh». Предполагается, что в данном скрипте будет производится запуск сервиса на удалённом сервере (например «ssh rootuser@другой_узел /etc/init.d/apache2 start»).
Таким образом downtime будет равняться времени:
времени отработки stop-here.sh +
последней досинхронизации (событий отловленных по inotify) +
времени отработки start-there.sh
Установить clsync можно следующим образом:
... ... @@ -30,7 +32,7 @@ clsync произведёт полную синхронизацию, после
# Gentoo
layman -a bircoph
emerge --sync
emerge =app-admin/clsync-0.3
emerge =app-admin/clsync-0.4
# FreeBSD
git clone https://github.com/xaionaro/clsync
... ... @@ -43,4 +45,3 @@ clsync произведёт полную синхронизацию, после
autoreconf -fi
./configure
make install
\ No newline at end of file
... ...