Июн 222013
 

likeunix.ru
Понадобилось мне несколько для нескольких сайтов реализовать отказоустойчивость.
Приступим нам надо сделать синхронизацию www директории и бд.
Имеем такую картину serv и serv1, на обоих серверах стоит FreeBSD 9.
Нам нужна двухсторонняя синхронизация файлов и директорий.
Синхронизировать будем с помощью софта Unison.
Для начало сделаем авторизации по ключу, что бы данные при перегонки у нас пароль не спрашивался.

# ssh-keygen -t rsa создастся ключ.
# ls -al /root/.ssh/
-rw-r--r--  1 root  wheel   398 Jun 15 12:22 authorized_keys
-rw-------  1 root  wheel  1679 Jun 15 12:22 id_rsa
-rw-r--r--  1 root  wheel   398 Jun 15 12:22 id_rsa.pub

Так вот id_rsa.pub нам нужно скопировать на сервер serv1 в /root/.ssh/authorized_keys

# cat id_rsa.pub >> /root/.ssh/authorized_keys

Тоже действия проделываем и с serv.
Перезагрузим ssh на обоих серверах, все готово.
Установим порт unison на обоих серверах.

# cd /usr/ports/net/unison && make install clean

Конфигурационный файл unison`a создадим на сервере serv, он у нас будет главным.

# cat /root/.unison/back.prf 
# Что синхронизируем.
root = /usr/local/www
# С чем синхронизим, вместо 87.87.87.10 подставляете свой ип и порт 26999 меняете на свой. Это мой ип сервера serv1
root = ssh://root@87.87.87.10:26999//usr/local/www

# Вкобчение пакетного режима, ответ на вопрос о действие применяется ко всем вопросам.
batch = true
# Автоматически принимать действие по умолчанию (при отсутствие конфликта).
auto = true
# Схраняем владельца.
owner = true
# Сохраняем группу.
group = true
# Синхронизируем с модификацией времени.
times = true

# Эти директории мы не синхронизируем. так же можно указать и файлы какие ну нужно синхронизировать ( ignore = Name *.txt ).
ignore = Path nginx-dist
ignore = Path apache22
ignore = Path phpMyAdmin
ignore = Path nginx

# Сохраняем резервные копии изменяемых файлов в отдельную  директорию.
#backups = true
#backup = Name *.txt
#backupdir = /usr/backup

# Включения лога операций.
log = true
# Куда логируем.
logfile = /var/log/unison.log

Вот и все, настройка unison закончена.
Теперь добавляем задание по в крон на сервере serv, к примеру что бы раз в чс происходила синхронизация файлов и директорий.
Теперь если какае-та информация меняется на одном из серверов то. она между собой синхронизится.
К примеру создадим на serv1 директорию /usr/local/wwww/test, и запустим синхронизация на сервере serv, этим мы добавим (синхронизируем) данные между сервера, и директория test появится на сервере serv.
И сделаем на оборот, удалим директория с сервера serv, и запустим синхронизацию на serv, то директория test удалить на сервере serv1.
Я думаю понятно объяснил.
Либо запускать в ручную.

# unison back.prf

Unison может работать и с сокетами, я эту функции еще не попробовал, пока мне она не нужна. Достаточна ssh.

 Leave a Reply

(required)

(required)

40 Запросов к базе. 0,504 Генерации страницы, 37MB Использование памяти.
Вы зашли с IP: 54.196.47.145