envia arquivos para dezenas de servidores rapidamente

4

Temos um cluster de máquinas (cerca de 50 e crescendo). Cada máquina possui um índice de pesquisa que precisa ser atualizado várias vezes por dia. Atualmente, atualizamos o índice em cada máquina individualmente, mas, idealmente, poderíamos atualizá-lo em uma máquina e depois sincronizar os novos arquivos com o restante do cluster. Inicialmente, usamos o rsync para lidar com isso, mas conforme o número de máquinas cresceu, ficou aparente que essa solução não pode ser dimensionada. Acabei de começar a pesquisar as transferências de arquivos multicast. Alguém com alguma experiência aqui que possa sugerir alguns lugares para procurar?

    
por Brian Lovett 14.05.2014 / 21:31

5 respostas

5

Esta foi uma pergunta da entrevista uma vez para mim ...

Opções multicast:
BitTorrent
Outros protocolos usando mensagens de pub / sub.

Outra abordagem ... Use uma árvore de distribuição:
Enviar para N hosts, que por sua vez enviarão para N hosts; e trabalhe abaixo a árvore desse jeito. Isso naturalmente exigiria algum trabalho de desenvolvimento do seu lado, mas é possivelmente a abordagem mais escalável.

A maior parte disso depende de quantos sistemas você realmente precisa atender, o tamanho do índice e sua infra-estrutura de rede.

    
por 15.05.2014 / 14:39
4

Você pode ser mais bem servido usando um sistema de arquivos compartilhado, especialmente se o índice de pesquisa for somente leitura pelo aplicativo usando o índice de pesquisa (ou seja, no final do destino). Dessa forma, muita da complexidade é feita para você.

    
por 15.05.2014 / 14:40
2

Tente bittorrent. Ele foi projetado para espalhar arquivos em vários hosts rapidamente. A multidifusão fará seu engenheiro de rede gritar de dor:)

    
por 15.05.2014 / 14:39
1
O UFTP funcionará para o que você está tentando fazer. Além do multicast, ele tem uma opção de sincronização para que os clientes recebam apenas um arquivo se houver uma versão mais recente dele.

Divulgação: autor da UFTP

    
por 15.05.2014 / 15:56
0

Eu recomendo olhar para o git. Eu usei isso no passado para fazer alterações em um servidor e empurrá-los para fora ou ter tarefas agendadas nos outros servidores para desativá-las. Há um pouco de flexibilidade com a solução.

    
por 15.05.2014 / 14:33