Простой, децентрализованный, автоматически синхронизированный локальный кешированный общий файловый ресурс для 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 требуется централизованный узел имен, поэтому я не могу его использовать.

Какие-нибудь мысли? Благодарю.

2 ответа

Похоже, BitTorrent Sync будет делать то, что вы хотите.

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

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

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

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

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

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

  • передача зашифрованных данных при работе git через SSH,

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

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

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

Другие вопросы по тегам