Temos um repositório central de arquivos, digamos server-1 em /srv/www
. Então temos também N número de servidores. Queremos que o servidor 1 seja capaz de implantar seus arquivos em /srv/www
todos os servidores da maneira mais rápida e eficiente possível.
Existe algo como rsync, mas em vez de especificar um único destino, especificar um cluster (N servidores) de destinos?
Eu estava pensando que git
pode funcionar, mas podemos especificar vários controles remotos para enviar também?
Qual é a melhor solução, supondo que N servidores possam eventualmente chegar a centenas.
rsync
deployment
git
Justin
fonte
fonte
Respostas:
Bem, o Twitter e o Facebook começaram a usar o bittorrent em seus clusters para distribuir novas rotações de código. Com isso, eles podem enviar códigos para dezenas de milhares de servidores em um período muito curto, comparado aos métodos de implantação centralizados da velha escola.
Ainda não parece que você está nessa escala, mas não há mal algum em projetar seu sistema de implantação de forma que ele não se torne um gargalo tão cedo.
fonte
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:
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.
fonte
rdist pode funcionar para você.
fonte
[afiliado] Usando o Kwatee ( http://www.kwatee.net ), você pode implantar em quantos servidores quiser. As implantações são incrementais (somente arquivos modificados são transmitidos) e podem ser paralelizados, tornando-os muito rápidos. Você também pode configurar o Kwatee para reconhecer o balanceador de carga, para que os servidores sejam removidos do LB durante as atualizações e depois reinseridos. Há uma interface gráfica para configurar os parâmetros de implantação e, em seguida, as implantações podem ser acionadas manualmente via GUI ou automatizadas usando comandos python.
fonte