O GlusterFS é uma boa opção para manter os servidores da web sincronizados?

9

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?

sbrattla
fonte
2
Talvez eu entenda mal o seu problema aqui, mas por que não usar o armazenamento em rede compartilhado entre os servidores?
precisa saber é o seguinte
1
@ Kwaio: eu gostaria de "espelhar" todos os servidores da Web (scripts e conteúdo enviado pelo usuário), pois isso evitará o tempo de inatividade se algo der errado com o servidor que hospeda o armazenamento compartilhado. Em outras palavras, não quero confiar em uma configuração em que todos os servidores da Web dependam novamente de um único armazenamento de arquivos.
precisa saber é o seguinte
Por que não um cluster de armazenamento em rede de alta disponibilidade?
mveroone
Claro, mas o que isso significa? Hardware?
precisa saber é o seguinte
Não sou especialista, mas isso significa ter o armazenamento em rede espelhado em uma arquitetura mestre-escravo em 2 clusters e um sistema que alterna em caso de falha do mestre. A maioria dos fornecedores de dispositivos de armazenamento em rede tem soluções para isso, mesmo se você pudesse construí-lo com dispositivos linux, o que exigiria bastante desenvolvimento.
Mveroone

Respostas:

2

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.

whiskykilo
fonte
Isso é interessante. Como o BitTorrent Sync lida com conflitos? Digamos que eu tenha 5 servidores da Web e um arquivo seja atualizado no servidor A. Depois, 2 segundos depois, o mesmo arquivo é atualizado no servidor C antes que a alteração em A atinja C. O software possui algoritmos para configurar qual servidor ganha nesses casos?
Sbrattla
Pelo que entendi, o BitTorrent Sync comparará a data / hora da modificação em ambas as cópias e manterá apenas as últimas, o que pode ser ideal ou prejudicial ao caso de uso.
whiskykilo
1

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.

Jure1873
fonte
1

É 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.

truongtx
fonte
O GlusterFS não é como o DRBD - ele não opera no nível do bloco, mas no nível do arquivo. Mas entendo que o uníssono é mais fácil de implantar.
precisa saber é o seguinte
-3

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?

Rosco
fonte
3
Voto negativo - O Puppet não é uma boa maneira de manter os arquivos sincronizados entre os servidores. No entanto, é uma ferramenta brilhante para gerenciar a configuração do servidor .
Craig Watson
Modificações podem ocorrer em qualquer servidor, pois participam de uma instalação com balanceamento de carga. Os usuários podem fazer upload de arquivos para qualquer servidor, e esse arquivo deve estar disponível em todos os servidores, pois o tráfego é espalhado entre os servidores.
Sbrattla
1
Bem, nesse caso, fantoche não é o que você deseja (mas ainda assim, @Craig Watson, um arquivo é um arquivo, configuração ou HTML, ainda é um arquivo). Duvido que o GlusterFS esteja pronto para produção, por isso, se você realmente quer algo seguro, é melhor usar um servidor NFS com alta disponibilidade.
Rosco