У нас есть центральное хранилище файлов, скажем, на сервере-1 в /srv/www
. Тогда у нас также есть N серверов. Мы хотим, чтобы сервер-1 мог развертывать свои файлы /srv/www
на всех серверах максимально быстро и эффективно.
Есть ли что-то вроде rsync, но вместо того, чтобы указывать одну цель, указывать кластер (N серверов) целей?
Я думал, что git
может работать, но мы можем указать несколько пультов, чтобы подтолкнуть тоже?
Что является лучшим решением, если предположить, что N серверов могут в конечном итоге достигать сотен.
rsync
deployment
git
Джастин
источник
источник
Ответы:
Ну, и Twitter, и Facebook начали использовать bittorrent в своих кластерах для распространения новых версий кода. Делая это, они могут передавать код на десятки тысяч серверов за очень короткое время по сравнению с централизованными методами развертывания старой школы.
Похоже, вы пока не достигли такого масштаба, но при разработке вашей системы развертывания нет никакого вреда, так что в ближайшее время она не станет узким местом.
источник
Я не рекомендую мерзавца для весов, с которыми вы разговариваете. Это может работать, но я лично вижу некоторые недостатки в использовании этой модели для получения.
Есть несколько вещей, которые определяют, как лучше всего это сделать:
Для идеальной конвергенции и максимальной скорости вам придется работать с сетевой файловой системой, такой как NFSv4. Кластерные файловые системы, о которых я знаю, не масштабируются до «нескольких сотен» узлов, поэтому это должна быть сетевая файловая система. Это создает свои собственные проблемы, но это означает, что вы достигнете конвергенции, как только файлы будут обновлены в заголовке NFS.
Для быстрой конвергенции вы можете использовать некоторую хитрость rsync. Если демон rsync в конечном итоге привязан к процессору, вы, безусловно, можете поставить пару-тройку серверов rsync за балансировщиком нагрузки, таким как haproxy. Соедините это с заданиями cron для извлечения данных (или каким-либо другим способом запуска обновлений кода), и вы сможете довольно быстро достичь конвергенции.
Для обоих из вышеперечисленных, вероятно, будет хорошей идеей разместить центральный репозиторий на каналах 10GbE для максимальной пропускной способности.
Альтернативой является push-rsync, где он запускается из центрального репозитория для отправки обновлений на ваши серверы. Он не будет сходиться так быстро, как любой из вышеперечисленных, но будет более дружественным к вашей внутренней пропускной способности. Используйте несколько хостов, нажимающих на разделенные диапазоны для лучшей скорости.
источник
rdist может работать на вас.
источник
[филиал] Используя Kwatee ( http://www.kwatee.net ), вы можете развернуть на столько серверов, сколько захотите. Развертывания являются инкрементными (передаются только измененные файлы) и могут быть распараллелены, поэтому это очень быстро. Вы также можете настроить Kwatee на балансировку нагрузки, чтобы серверы удалялись из LB во время обновлений, а затем снова вставлялись. Существует графический интерфейс для настройки параметров развертывания, а затем развертывание может быть инициировано вручную через графический интерфейс или автоматизировано с помощью команд python.
источник