Eu tenho dois servidores web, com a chance de ter que adicionar mais servidores ao longo do caminho. No momento, mantenho esses servidores sincronizados usando lsyncd + csync2. Funciona bem em termos de desempenho porque todos os arquivos estão nos dois servidores (não é necessário acesso à rede para abrir arquivos localmente), mas não tão bem em outros casos.
Um exemplo disso é se eu excluir um arquivo no servidor 1 e carregar imediatamente um novo arquivo no servidor 1 com o mesmo nome. Enquanto isso, o arquivo será excluído do servidor 2, fazendo com que o arquivo recém-carregado no servidor 1 seja excluído, pois o servidor 2 envia o evento de exclusão para o servidor 1 para concluir o "círculo de atualização".
Não consigo deixar de pensar que deve haver uma maneira melhor de manter os servidores sincronizados. Eu estive analisando o GlusterFS e vejo que uma configuração em que todos os arquivos são replicados para todos os servidores é desencorajada. No entanto, estou executando sistemas CMS como o Drupal nesses servidores. Esses sistemas CMS geralmente abrem muitos arquivos, e estou preocupado que muito tráfego de rede para se apossar desses arquivos diminua a velocidade das solicitações.
Seria uma idéia investigar a substituição de lsyncd + csync2 pelo GlusterFS configurado para replicar todos os arquivos em todos os nós, ou isso é uma má idéia?
fonte
Respostas:
O BitTorrent Sync pode fazer a ação por você. Estou usando-o para manter os arquivos sincronizados entre alguns servidores internos em minha casa e ele está fazendo o trabalho maravilhosamente. A outra coisa em que você precisa pensar é no banco de dados back-end quando seu aplicativo usa um CMS. Certifique-se de que haja replicação do MySQL, ou algo desse tipo.
fonte
O Gluster resolveria o problema que você tem, pois ele pode reter os bloqueios, propagar alterações - exclua o arquivo em todos os outros nós, mas pode adicionar latência adicional que pode ser um problema para um servidor da web. A próxima alternativa é DRBD + OCFS2 ou GFS, mas isso provavelmente é mais complexo, pois com o gluster você está usando o sistema de arquivos subjacente - ele não opera no nível do bloco; portanto, se os servidores estiverem fora de sincronia, não será muito difícil de corrigir, os arquivos podem é corrompido tão facilmente por causa de cérebros divididos, etc ...
Estamos usando-o para um servidor de e-mail e é bastante lento para diretórios com muitos arquivos. Você definitivamente deve testar tudo antes de implantar. Atualmente, estou testando a montagem NFS porque funciona melhor para arquivos pequenos.
fonte
É difícil implantar o GlusterFS. Para dados da Web, o nível de sincronização de arquivos como o Unison é muito mais fácil de implantar e manter.
O DRBD é uma solução perfeita para manter a sincronização de dados no nível do bloco. Mas você precisa formatá-los para um formato especial como OCFS2 ou algo semelhante.
fonte
Por que você não usa uma ferramenta como fantoche ? Escreva uma vez em uma fonte e, uma vez pronto, implante-o nos destinos usando "puppet kick" ou mcolletive. Está bem documentado. E você pode adicionar servidores facilmente mais tarde, se necessário.
Você também pode confiar em ferramentas usando inotify, como lsyncd, trabalhando no nível do kernel. Ele procura alterações em uma pasta e aciona uma sincronização. Mas se uma ferramenta dedicada à sincronização de arquivos em um cluster como o csync2 não for suficiente, não sei o que será.
Só para ter certeza, as modificações acontecem também no servidor 2 ou apenas no servidor 1?
fonte