Назад | Перейти на главную страницу

Простой, децентрализованный, автоматически синхронизируемый, локальный кешированный файловый ресурс для Linux-сервера

Интересно, может ли кто-нибудь порекомендовать мне какое-нибудь решение для обмена файлами между небольшим количеством Linux VPS (виртуальных частных серверов).

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

Требования:

  1. Просто. Это не обязательно должна быть сложная технология, предназначенная для больших кластеров. Машин у меня мало, скажем 10-20.
  2. Данные копируются и хранятся на всех машинах. VPS не расположены близко друг к другу, поэтому сетевое соединение медленное, поэтому все данные должны быть реплицированы и локально сохранены на всех машинах.
  3. Децентрализовано. Машины могут быть отключены или удалены в любое время из-за того, что я забыл своевременно заплатить. Таким образом, машинам не нужно поддерживать соединение с централизованным сервером, а нужно общаться друг с другом. Конечно, когда машина настраивается впервые, она знает список машин, но после этого они должны просто общаться друг с другом и поддерживать список доступных хостов. Мой рабочий стол не имеет фиксированного внешнего IP-адреса, поэтому рабочий стол следует использовать только для отправки данных, а не для получения этими серверами VPS.
  4. Когда я публикую новые данные со своего рабочего стола, он должен просто отправить примерно одну копию данных, а затем машины должны получить данные друг от друга.
  5. (Необязательная функция, но настоятельно рекомендуется) каталог данных отображается как vfs и монтируется в определенный каталог. Это значительно упрощает использование.

Одна вещь, которую я рассмотрел, была некоторая файловая система на основе плавких предохранителей, поддерживаемая git. На github или code.google.com есть куча git-fs, но ни один из них не выглядит зрелым и надежным. Кроме того, на каждой машине по-прежнему необходимо вести список доступных машин для общения, что не является автоматическим и, следовательно, болезненным.

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

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

Есть предположения? Спасибо.

BitTorrent Sync звучит так, как будто он сделает то, что вы хотите.

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

Вы даже можете указать ключ только для чтения, чтобы другие машины не могли повлиять на ваш «мастер».

Машины могут быть в автономном режиме сколь угодно долго, и когда они подключатся к сети, они будут подключаться к другим одноранговым узлам и извлекать любые различия.

И, конечно же, это бесплатно.

Я бы просто использовал, например, git clone из DNS-имени git clone ssh://mastergit.example.com/vmshared.git а потом git pull периодически с cron. Это DNS-имя будет псевдонимом (CNAME) одной из виртуальных машин. Когда главный сервер изменяется, вы просто меняете этот псевдоним DNS на другой компьютер.

С аутентификацией с одинаковыми ключами SSH для каждой виртуальной машины у вас будет:

  • зашифрованная передача данных, поскольку git работает через SSH,

  • легкое переключение на другой мастер-сервер,

  • легкое нажатие изменений из вашей локальной копии (просто git push),

  • контроль версий и легкий откат, если что-то тормозит.