URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78592
[ Назад ]

Исходное сообщение
"Синхронизация каталогов на нескольких серверах"

Отправлено booter , 07-Фев-08 13:50 
Есть задачка примерно в следующей постановке:

Существует несколько серверов, на каждом есть каталоги, в которых лежат некие файлы контейнеров OpenVZ. Соответственно, хочется, чтобы эти каталоги хранились на нескольких серверах одновременно для того, чтобы в случае падения одного из серверов тут же парой команд можно было поднять контейнер на другой машине.

Вопрос - как наилучшим образом синхронизировать каталоги?

Имеющиеся варианты:
1. использовать распределенные ФС. Пока ничего на этот счет не нагуглилось. В каком направлении копать?
2. периодически запускать rsync. Не очень хотелось бы, потому как надо будет отбивать повторный запуск, в случае, если за предыдущий период данные не успели скопироваться.

Кто что использует? Какие мысли?


Содержание

Сообщения в этом обсуждении
"Синхронизация каталогов на нескольких серверах"
Отправлено DustpaN , 07-Фев-08 14:42 
>[оверквотинг удален]
>Вопрос - как наилучшим образом синхронизировать каталоги?
>
>Имеющиеся варианты:
>1. использовать распределенные ФС. Пока ничего на этот счет не нагуглилось. В
>каком направлении копать?
>2. периодически запускать rsync. Не очень хотелось бы, потому как надо будет
>отбивать повторный запуск, в случае, если за предыдущий период данные не
>успели скопироваться.
>
>Кто что использует? Какие мысли?

Rsync
А скрипт простой:

#!/bin/sh
ls /folde/SyncScript.run > /dev/null 2>&1
if [ $? -ne 1 ]
then
echo "Script already run"
else
echo 1 > /folde/SyncScript.run

Тут собственно синхронизация

rm -f /folde/SyncScript.run
fi


"Синхронизация каталогов на нескольких серверах"
Отправлено angra , 08-Фев-08 00:04 
>ls /folde/SyncScript.run > /dev/null 2>&1
>if [ $? -ne 1 ]

Надо добавить в свою коллекцию извращений. Прочитайте раздел CONDITIONAL EXPRESSIONS в man bash, подавляющее большинство там проверки на файл. Например можно так:
lockfile="/some_path/some_name"
if [ -e "$lockfile" ]
then
...
exit
fi
touch "$lockfile"
...
rm -f "$lockfile"