Хорошо ли BitTorrent для копирования файлов между серверами на рабочем месте?
У меня есть 1 исходный сервер, который содержит около 30 ГБ файлов, которые я хочу скопировать на 7 других серверов. В настоящее время я пересылаю файлы на первые четыре сервера, а после завершения передачи SCP на последние 3 сервера.
Будет ли использование BitTorrent быстрее распределять файлы по всем 7 одновременно? Внутреннее соединение уже быстрое и согласованное между каждым из серверов. Я знаю, что это, вероятно, потребует некоторой нагрузки от исходного сервера, но это займет больше времени для распространения файлов?
Какой хороший скрипт-клиент я мог бы использовать из оболочки? Я бы хотел, чтобы все прекратили посев после 100%.
4 ответа
Это зависит от того, как устроена ваша сеть и где существуют узкие места, но да, использование BitTorrent может быть быстрее. Теоретически, вместо того, чтобы отправлять 7 копий одних и тех же файлов, ваш исходный сервер должен будет отправить только 1 копию, распределенную между получателями. К тому времени, когда это произойдет, остальные участники будут разделять части, которые они не получили, непосредственно между собой.
Если ваша сеть поддерживает многоадресную рассылку, возможно, проще настроить udpcast, mdp, multisend или что-то в этом роде: ваш источник отправит одну копию данных, и сеть направит ее всем получателям.
Преимущество BitTorrent перед другими инструментами распространения файлов, например, rsync, заключается в том, что клиенты начинают предлагать свои данные другим клиентам, поэтому, если сервер имеет медленное соединение с клиентами, пропускная способность будет намного выше.
BT - это протокол, предназначенный для глобального обмена. Таким образом, вам нужно будет найти способ заблокировать всех других клиентов, кроме 7, которых вы хотите кормить (или ваш торрент скоро окажется в The Pirate Bay).
Что касается остановки на 100%, каждый BT-клиент сделает это: так как ни один клиент больше не запрашивает данные, больше не будет заполнения. Приложение будет по-прежнему работать, но оно будет вызывать лишь небольшую струйку данных между клиентами и трекером, сообщая, что они все еще доступны.
Попробуйте оригинальный BitTorrent-клиент, написанный на Python. Это позволит вам вносить любые изменения, которые вы пожелаете. К сожалению, я не могу найти ссылку банкомата. Кто-нибудь?
[РЕДАКТИРОВАТЬ] На основе комментария saua: Если вы используете частный трекер, ваши торренты не должны распространяться неожиданно. Тем не менее, вы должны использовать торрент-клиент только из надежного источника. В противном случае вы можете рискнуть тем, что какой-нибудь взломщик добавит в код небольшую дополнительную функцию, которая публикует частные торренты там, где вы не хотите, чтобы они появлялись.
BitTorrent - отличная идея, если вы хотите реплицировать файлы через дерево серверов, например, без необходимости выдавать удаленную команду всем серверам для копирования из одного места; потенциально вызывает узкое место.
Инженеры Twitter сделали это с большим успехом с Murder, которая сейчас на github.
http://engineering.twitter.com/2010/07/murder-fast-datacenter-code-deploys.html
Если все 8 ваших серверов подключены к одному и тому же разделу сети с использованием Bit Torrent, вряд ли это ускорит процесс. На самом деле вы получите так много столкновений, что это будет очень медленно. BitTorrent только ускорит процесс, если вы используете полностью коммутируемую сеть, и восемь серверов могут общаться друг с другом независимо, не влияя на связь между другими серверами.