Я не рекомендую git для ваг, з якими ви розмовляєте. Це може спрацювати, але я особисто бачу деякі дефіцити використання цієї моделі для отримання.
Є кілька речей, які визначають, як найкраще робити це:
- Наскільки велике репо потрібно поділити.
- Як швидко це потрібно для сходження.
Для досконалої конвергенції та максимальної швидкості вам доведеться працювати з мережевою файловою системою, наприклад NFSv4. Кластеризовані файлові системи, про які я знаю, не масштабуються до «кількох сотень» вузлів, тому це повинна бути мережева файлова система. Це представляє власні проблеми, але це означає, що ви досягнете конвергенції з моменту оновлення файлів на голові NFS.
Для швидкої конвергенції можна скористатися деякою хитрістю rsync. Якщо демон rsync в кінцевому підсумку пов'язаний з процесором, ви, безумовно, можете поставити пару-три сервери rsync за балансиром навантаження, як haproxy. У поєднанні з завданнями cron, щоб отримати дані (або якийсь інший метод запуску оновлень коду), ви можете досить швидко досягти конвергенції.
Для обох вищезазначених, ймовірно, буде гарною ідеєю розмістити центральний сховище на 10GbE-посиланнях для максимальної пропускної здатності.
Замінник - це push-rsync, де він запускається з центрального репо, щоб надсилати оновлення на ваші сервери. Він не збігатиметься так швидко, як будь-яке з перерахованих вище, але буде більш привітним до вашої внутрішньої пропускної здатності. Для кращої швидкості використовуйте декілька хостів, які натискають на розділені діапазони.