Eu não recomendo git para as escalas que você está falando. Pode funcionar, mas eu pessoalmente vejo alguns déficits com o uso desse modelo para buscar.
Existem algumas coisas que determinam a melhor maneira de fazer isso:
- Qual o tamanho de um repositório que precisa ser compartilhado.
- Quão rápido precisa convergir.
Para uma convergência perfeita e velocidade máxima, você precisará ir com um sistema de arquivos de rede, como o NFSv4. Os sistemas de arquivos em cluster que eu conheço não escalam para 'centenas' de nós, então tem que ser um sistema de arquivos de rede. Isso apresenta seus próprios desafios, mas significa que você alcançará a convergência no momento em que os arquivos forem atualizados no cabeçalho do NFS.
Para convergência rápida, você pode usar alguns truques rsync. Se o daemon rsync acaba sendo limitado pela CPU, você pode certamente colocar um par de três servidores rsync atrás de um loadbalancer como o haproxy. Junte isso a tarefas agendadas para extrair dados (ou algum outro método para acionar atualizações de código) e você poderá atingir a convergência rapidamente.
Para ambos os itens acima, provavelmente será uma boa ideia colocar o repositório central em links de 10 GbE para obter o máximo rendimento.
Uma alternativa é um push-rsync, em que é executado a partir do repositório central para enviar atualizações para seus servidores. Ele não convergirá tão rápido quanto qualquer um dos itens acima, mas será mais amigável para sua largura de banda interna. Use vários hosts enviando para intervalos divididos para melhor velocidade.