Nie polecam git dla skal, z którymi rozmawiasz. Może działać, ale osobiście widzę pewne braki w korzystaniu z tego modelu do pobierania.
Jest kilka rzeczy, które określają, jak najlepiej to zrobić:
- Jak duże repo musi zostać udostępnione.
- Jak szybko musi się zbiegać.
Aby uzyskać idealną zbieżność i maksymalną prędkość, musisz korzystać z sieciowego systemu plików, takiego jak NFSv4. Klastrowe systemy plików, o których wiem, nie skalują się do „wielu setek” węzłów, więc musi to być system plików sieciowych. To stwarza własne wyzwania, ale oznacza, że osiągniesz konwergencję w momencie aktualizacji plików na głowie NFS.
Aby uzyskać szybką konwergencję, możesz użyć sztuczek rsync. Jeśli demon rsync zostanie ostatecznie związany z procesorem, z pewnością można umieścić kilka trzech serwerów rsync za modułem równoważenia obciążenia, takim jak haproxy. Połącz to z zadaniami crona, aby pobrać dane (lub inną metodą wyzwalania aktualizacji kodu), a możesz szybko uzyskać konwergencję.
W obu powyższych przypadkach dobrym pomysłem będzie umieszczenie centralnego repozytorium na łączach 10GbE w celu uzyskania maksymalnej przepustowości.
Alternatywą jest push-rsync, w którym jest uruchamiany z centralnego repozytorium w celu wypychania aktualizacji na twoje serwery. Nie zbiegnie się tak szybko jak jedno z powyższych, ale będzie bardziej przyjazny dla twojej wewnętrznej przepustowości. Użyj większej liczby hostów, przesuwając do podzielonych zakresów, aby uzyskać lepszą prędkość.