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