Синхронизация данных мастер-мастер


Сейчас, потихоньку учусь играть в отказоустойчивые штуки.

Пока, научился под FreeBSD использовать CARP - эт когда за один IP отвечает несколько железок и в случае падения мастера, включается в работу другой компьютер и подхватывает этот IP адрес.

Соответственно возник вопрос - как держать данные на всех железках в актуальном состоянии.

Что пробовал:

  • rsync - запускается каждую минуту, смотрит на состояние компьютера, если слейв, то синхронизирует данные с мастера.
  • zfs send | zfs recieve - идея та же самая, но надежнее работает с базами данных, т.к. за время работы данные измениться уже не могут.

Сейчас нашел еще две клевые программы BTSync и Syncthing. Обе программы служат для синхоризации данных между своими компьютерами на прямую. Т.е. некоторый аналог Dropbox, Google Drive и Яндекс.диск, только без их стандартных ограничений на место и без опаски, что данные где-то всплывут.

Обе программы могут забирать данные со всех компьютеров имеющих эти данные, т.е. работают по принципу торрента и имеют клиентов под самые разные платформы.

Существенные отличия:

BTSync:

  • Закрытый протокол и клиент.
  • Для начала синхронизации достаточно иметь секретный ключ ресурса с которым будешь синхронизироваться. Т.е. настраиваешь папочку, на нее получаешь секретный ключ. копируешь этот ключ клиента на другом компьютере и пошла синхронизация.
  • Ключи могут быть на полный доступ или только на чтение. Т.е. обладатель ключа на чтение не сможет обновить данные в хранилище.

Syncthing

  • Открытый протокол и клиент
  • Для начала синхронизации на компьютерах (нодах) нужно добавить другие компьютеры (ноды), создать идентичные по названию ресурсы (репозитарии), разрешить доступ конкретным клиентам (нодам) к конкретным ресурсам (репозитариям).
  • Репозитарии могут быть на ноде может быть как в обычном режиме, т.е. чтение и запись, так и в режиме Master Repository, т.е. когда возможно только чтение из нее.
  • Есть отдельный анонсер сервер, т.е. свои ноды можно связать использую исключительно свои ресурсы.

В правильном понимании, кластер на этом строить, наверное, не правильно, т.к. синхронизация происходит не моментальная, а несколько отложенная по времени. Но для общего хранилища, вполне, держать можно.

Так же, вполне нормально синхронизировать свои файлы/докуметы. У обоих программ поддерживается версионность файлов. В одном случае устанавливается в днях, а в другом в количестве копий.