HighLoad.org – блог о высоких нагрузках
HighLoad.org > Масштабируемые инструменты: Murder: инструмент для быстрого развертывания, основанный на BitTorrent

Масштабируемые инструменты: Murder: инструмент для быстрого развертывания, основанный на BitTorrent
2010-03-17 07:00 my_fess 
Развертывание на одном сервере может быть сделано одним скриптом, который выполняет множество ssh/scp команд. Если у вас несколько больше серверов, вы можете запустить его в цикле последовательно или запустить несколько процессов параллельно. Однако, в какой-то момент это станет неуправляемым, особенно если вам надо обновлять несколько датацентров одновременно. Так как же такие компании как Twitter выпускают свои релизы?
Murder – это интересный инструмент, основанный на P2P/BitTorrent, который Twitter использует для распространения файлов во время обновления своего программного обеспечения. Вот некоторые подробности.
Murder – это метод, использующий BitTorrent для распространения файлов между большим количеством серверов в production окружении. Он делает возможными быстрые и масштабируемые развертывания в окружениях от сотен до десятков тысяч серверов, в которых централизованные системы не справляются. «Murder» обычно называют стаю ворон, а в данном случае это применяется к множеству серверов, что-то выполняющих. Для того, чтобы совершить передачу данных, необходимо сначала настроить несколько компонентов – это последствие BitTorrent природы системы. Murder основывается на BitTornado.
  • Торрент трекер. Этот трекер, запускаемый скриптом ‘murder_tracker.py’, выполняет автономный сервер на одной машине. Хотя технически это централизованная система (все полагается на этот трекер), общение между этим сервером и остальными минимально и приемлемо. В целях упрощения tracker-less распространение (DHT) в данный момент не поддерживается. В самом деле трекер – это просто mini-httpd сервер, который обслуживает /announce путь, по которому BitTorrent клиенты обновляют свое состояние.
  • Сидер. Это сервер, у которого есть файлы, которые вы хотите доставить на все остальные сервера. В случае Twitter это сервер, который выполняет git diff. Файлы помещаются в директорию, для которой создается торрент. Murder делает tgz архив директории и создает .torrent файл (очень маленький файл, содержащий базовую хэш информацию о tgz файле). Этот файл дает пирам знать, что они скачивают. Трекер отслеживает торрент файлы, который в данный момент распространяются. Когда передача данных запускается, сидер будет первым сервером, с которого многие машины получат «кусочки». Эти «кусочки» затем будут распространяться в деревоподобной манере по остальной сети без необходимости получения частей от сидера.
  • Пиры. Это группа серверов (от сотен до десятков тысяч), которые будут получать файлы и распространять «кусочки» между собой. Когда пир завершит скачивание tgz файла, он продолжит сидировать какое-то время, чтобы предотвратить hotspot эффект на сидере.
Процесс передачи данных
  1. Настройте список серверов и общие настройки в config.rb (один раз).
  2. Распространите файлы Murder по всем вашим серверам: (один раз) cap murder:distribute_files
  3. Запустите трекер: (один раз): cap murder:start_tracker
  4. Cоздайте торрент файл из удаленной директории файлов (на сидере): cap murder:create_torrent tag="Deploy20100101" files_path="~/files"
  5. Запустите сидирование файлов: cap murder:start_seeding tag="Deploy20100101"
  6. Распространите файлы на остальные сервера: cap murder:peer tag="Deploy20100101" destination_path="/tmp/out"
Когда передача завершится, все файлы будут в /tmp/out/Deploy20100101/ на всех серверах.

Автор статьи: Royance Tharakan Дата: 14 марта 2010 Оригинал статьи


комментарии [0]  | комментировать

  © 2010-2018 HIGHLOAD