Я не рекомендую мерзавца для весов, с которыми вы разговариваете. Это может работать, но я лично вижу некоторые недостатки в использовании этой модели для получения.
Есть несколько вещей, которые определяют, как лучше всего это сделать:
- Насколько большим репо нужно поделиться.
- Как быстро это должно сходиться.
Для идеальной конвергенции и максимальной скорости вам придется работать с сетевой файловой системой, такой как NFSv4. Кластерные файловые системы, о которых я знаю, не масштабируются до «нескольких сотен» узлов, поэтому это должна быть сетевая файловая система. Это создает свои собственные проблемы, но это означает, что вы достигнете конвергенции, как только файлы будут обновлены в заголовке NFS.
Для быстрой конвергенции вы можете использовать некоторую хитрость rsync. Если демон rsync в конечном итоге привязан к процессору, вы, безусловно, можете поставить пару-тройку серверов rsync за балансировщиком нагрузки, таким как haproxy. Соедините это с заданиями cron для извлечения данных (или каким-либо другим способом запуска обновлений кода), и вы сможете довольно быстро достичь конвергенции.
Для обоих из вышеперечисленных, вероятно, будет хорошей идеей разместить центральный репозиторий на каналах 10GbE для максимальной пропускной способности.
Альтернативой является push-rsync, где он запускается из центрального репозитория для отправки обновлений на ваши серверы. Он не будет сходиться так быстро, как любой из вышеперечисленных, но будет более дружественным к вашей внутренней пропускной способности. Используйте несколько хостов, нажимающих на разделенные диапазоны для лучшей скорости.