
Temos um cluster de máquinas (cerca de 50 e cada vez mais). 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 à medida que o número de máquinas cresceu, ficou evidente que esta solução não pode ser escalonada. Acabei de começar a pesquisar transferências de arquivos multicast. Alguém com alguma experiência aqui que possa sugerir alguns lugares para procurar?
Responder1
Esta foi uma pergunta de entrevista uma vez para mim ...
Opções de multicast:
BitTorrent
Outros protocolos que usam mensagens pub/sub.
Outra abordagem... Use uma árvore de distribuição:
Envie para N hosts, que por sua vez enviarão cada um para N hosts; e desça a árvore dessa maneira. É claro que isso exigiria algum trabalho de desenvolvimento da sua parte, mas é possivelmente a abordagem mais escalonável.
A maior parte disso depende de quantos sistemas você realmente precisa atender, do tamanho do índice e da sua infraestrutura de rede.
Responder2
Você pode ser melhor atendido usando um sistema de arquivos compartilhado, especialmente se o índice de pesquisa for somente leitura pelo aplicativo que usa o índice de pesquisa (ou seja, no final do destino). Dessa forma, grande parte da complexidade é feita para você.
Responder3
Experimente o bittorrent. Ele foi projetado para distribuir arquivos rapidamente por vários hosts. Multicast fará seu engenheiro de rede gritar de dor :)
Responder4
Eu recomendo dar uma olhada no git. Eu usei isso no passado para fazer alterações em um servidor e enviá-las para fora ou ter tarefas cron nos outros servidores para desativá-las. Há bastante flexibilidade com a solução.