29 сент. 2012 г.

Репликация файлов на Windows

Задача

Настроить регулярную одностороннюю репликацию (синхронизацию) файлов с основного сервера на резервный через интернет. Трафик частично платный (на одном из серверов оплачивается исходящий трафик).

Рассмотренные варианты (в порядке рассмотрения)

DropBox, SkyDrive

Изменения синхронизируеются в две стороны. Обычно это то, что нужно, но в данном случае нам всегда надо приводить резервный сервер в состояние рабочего. Неизвестно как оба ресурса отнесутся к постоянной синхронизации относительно больших и частых изменений, т.е. сценарий использования потребляет ресурсов явно больше чем просто офисная работа, на которую ориентированы бесплатные пакеты. Этот способ может быть использован при необходимости, но лучше поискать что-то более автономное.

Rsync-сервер и rsync-клиент под cygwin

Утилита rsync удобна для синхронизации относительно небольших изменений. При изменении части файла заново будет копироваться не весь файл, а только измененная часть. Синхронизироваться будут в т.ч. базы данных, у которых размер большой, а ежедневные изменения маленькие. Настройка оказалась относительно простой, но неудобной - нужно создавать текстовые конфиги, которые на память не вспомнишь. Отсутствует шифрование как передачи, так и авторизации.

DFS - распределенная файловая система Windows

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

Rsync под cygwin через ssh (выбран в качестве итогового)

Авторизация и шифрование соединения по ключам - средствами ssh. Теоретически (но в общем не обязательно) нужно как-то ограничить доступ к серверу. Настраивается очень просто: при установке cygwin нужно указать openssh, rsync, cron. Потом вызывать ssh-host-config и согласиться со всеми вопросами (можно почитать и с некоторыми не согласиться) и собственно всё - ssh-сервер настроен. Дальне обычная настройка авторизации. На сервере с которого будет делаться подключение ssh-keygen и прописать получившуюся в .ssh/id_rsa.pub строку в файл .ssh/authorized_keys на целевом сервере (куда будут подключения) в домашнюю папку пользоваться с логином которого будем подключаться.
Дальше обычная команда rsync, например
rsync --delete-during --av -e ssh [email protected]:/cygdrive/c/sites/ /cygdrive/c/sites/

Скорость синхронизации приемлимая (между разными ДЦ (Россия-Ирландия) у меня колеблется в районе 170КБайт/сек), нагрузка на процессор низкая (колеблется около 0), потребление памяти низкое (на все cygwin-овские процессы в сумме около 10-20МБ).

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

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