Compartilhar / casa entre datacenters

15

Eu tenho dois servidores, colocados em datacenters na Holanda e na França. Ambos estão executando o Debian Wheezy. Eu preciso compartilhar / casa entre eles, com bom desempenho. Existem 300 e poucos usuários nos servidores, cerca de 30 deles devem ter processos ativos em um determinado servidor em um determinado momento, cada um com leituras de 50 kbit e gravações de 20 kbit / segundo, com picos curtos em torno de 2000 kbit / s lendo. medidas com iotop no armazenamento local. Eu tenho muitos arquivos pequenos, cerca de 500000 no total e preciso da menor latência possível. O ping entre os servidores tem 17 ms e a conexão pode atingir cerca de 20 a 30 MB / s ao usar o scp e o wget. Parece que deve haver muita largura de banda disponível, pois também funciona, mas ...

O que eu tentei até agora: sshfs: parecia ter um desempenho melhor do que o nfs, mas alterou as permissões de arquivos para fazer root, causando o travamento do aplicativo.

nfs: Muito lento, tentei noatime várias outras opções, mas continua agindo lentamente, mesmo quando apenas alguns processos estão ativos.

drbd: 5 horas de trabalho sem saída, quando percebi que não era possível montar o sistema de arquivos nos dois sistemas :-(

glusterfs: Ter uma cópia local de todos os dados realmente parecia promissor, mas o acesso aleatório a arquivos é muito lento e, após algum tempo, torna-se inacreditável, lento e quase trava. noatime não ajuda.

NFS novamente: ainda lento.

Chorando no teclado: nenhuma melhoria.

O que tentar a seguir? Cada um dos ensaios fracassados ​​levou uma noite ou mais durante a última semana, e eu realmente gostaria que o próximo método funcionasse. E sim, é crucial que os sistemas de arquivos sejam compartilhados entre os dois servidores.

Obrigado por novas idéias sobre este problema.

user3850506
fonte
6
"Chorando no teclado: nenhuma melhoria." OK, isso recebe um +1 de mim.
precisa
Você provavelmente desejará glusterfs ou ceph. Um sistema de arquivos distribuído. Além disso, você pode montar o drbd várias vezes, mas apenas uma leitura / gravação e, de qualquer forma, é uma péssima idéia.
Sirex
Eu tentei o glusterfs e, embora funcione muito bem com arquivos grandes, fica muito lento ao ler ou gravar arquivos pequenos. Parece ser um problema comum com o glusterfs e não consegui encontrar uma solução para isso. Vou dar uma olhada em Ceph. Você já tentou você mesmo?
user3850506
3
Montar o mesmo dispositivo de bloco e sistema de arquivos, mesmo o RO em um sistema diferente é ruim, a menos que o driver do sistema de arquivos entenda que o dispositivo do bloco de suporte pode mudar arbitrariamente a qualquer momento. O dispositivo de bloco pode mudar e invalidar completamente o cache do inode, e o VFS lê felizmente dados que não estão mais onde você pensa. Os sistemas de arquivos com reconhecimento de disco compartilhado, como GFS2 e veritas, podem fazer isso no DRBD ou em qualquer disco do tipo SAN. Não posso dizer com certeza que o desempenho de arquivos pequenos será aceitável.
Andrew Domaszek

Respostas:

2

Existem algumas soluções possíveis para isso:

  1. Você pode optar por um armazenamento em bloco replicado como DRBD (ou MARS, conforme mencionado acima), mas é necessário configurar um sistema de arquivos em cluster na parte superior do armazenamento em bloco. Tais sistemas de arquivos podem ser GFS2 ou OCFS2, ambos disponíveis no kernel da Debian. O DRBD pode lidar com primário / primário e você pode montá-lo nos dois servidores ao mesmo tempo. Mas se você fizer isso com um sistema de arquivos padrão, um servidor não saberá sobre o outro e você destruirá seu sistema de arquivos em alguns segundos. Um sistema de arquivos de cluster na parte superior lidaria com a comunicação e o bloqueio para que ambos os nós pudessem gravar no mesmo bloco.

  2. Use um sistema de arquivos distribuído para / home. Você encontrará uma lista desses sistemas de arquivos em http://en.wikipedia.org/wiki/Comparison_of_distributed_file_systems . Mas cuidado e escolha sabiamente. Todos eles não podem fazer mágica e todos têm suas desvantagens. Gluster é um sistema de arquivos. Para alguns sistemas, você pode precisar de mais do que apenas dois nós.

  3. Se ele não precisar ser replicado em tempo real e uma sincronização de arquivos quase em tempo real for suficiente, dê uma olhada no BitTorrent Sync ( http://www.getsync.com/ ), Dropbox ou alternativas. Cada servidor possui seu próprio / home, mas as alterações são replicadas em arquivo para o outro servidor.

mgabriel
fonte
1
rsync ftw 123456
dmourati