Распространение пакета файлов по экстрасети - PullRequest
2 голосов
/ 27 марта 2010

Я хочу иметь возможность распространять пакеты файлов, около 500 МБ на пакет, на все машины в корпоративной «экстрасети» (которая в основном представляет собой несколько локальных сетей, подключенных с использованием различных частных механизмов, включая выделенные линии и VPN).

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

Новый пакет будет создаваться каждые несколько дней, а иногда старые пакеты будут удаляться (но эту проблему можно решить отдельно).

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

Вот и все. Я не против написания некоторого кода, чтобы справиться с этим, но было бы предпочтительнее, если бы это был bash, Python, Ruby, Lua, C или C ++.

Ответы [ 3 ]

0 голосов
/ 27 марта 2010

Я собираюсь предложить вам использовать идею compy о rysnc для копирования файлов, и в этом случае вы можете использовать язык сценариев по вашему выбору.

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

Вы можете реализовать это в bash - python может быть лучше или пользовательский демон C.

При обновлении сети вам нужно будет обновить матрицу на основе последней информации.

См .: Алгоритм Прима .

0 голосов
/ 28 марта 2010

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

0 голосов
/ 27 марта 2010

А как насчет rsync?

...