Usando o GlusterFS para replicação simples

4

pergunta de novato. Eu preciso construir isso:

  • /shared pasta ~ 500GB de arquivos, ~ 1MB cada um.
  • Duas caixas (server1 e server2) conectadas por uma LAN de 1 Gbs
  • Cada caixa precisa ter acesso r / w aos arquivos, então os dois são clientes
  • Eu quero que os arquivos sejam replicados em ambas as caixas, toda vez que um arquivo é escrito em um servidor, o mesmo arquivo deve estar presente no outro.

Minhas perguntas sobre o GlusterFS:

  • Ele irá duplicar os arquivos na mesma caixa ?. Por exemplo, os arquivos estão em /shared e a montagem em /mnt/shared . Vai levar 1GB de espaço em todos os servidores?
  • Em vez disso, devo usar o sistema de arquivos diretamente, escrevendo localmente em /shared ? A replicação funciona desta maneira sem montar um cliente?

Além disso, se alguém souber de alguma outra forma de realizar essa configuração, ficarei muito grato. Agradecemos antecipadamente.

    
por k7k0 30.05.2010 / 15:44

3 respostas

5

Na verdade, o Gluster é perfeito para esse cenário. Você obtém replicação bidirecional e a capacidade de montar o sistema de arquivos a partir de qualquer uma das máquinas, oferecendo (teoricamente) o dobro da capacidade efetiva de E / S do NFS e o failover ativo caso uma das caixas falhe.

O problema em fazer o rsync ativo dessa maneira é bloquear o I / O devido a bloqueios de arquivo. Dependendo da sua aplicação e da mudança de dados, isso pode ser irrelevante ou desastroso! Sistemas de arquivos distribuídos têm semânticas de bloqueio muito específicas que impedem que isso aconteça. Mesmo que o inotify tenha um melhor bloqueio (quando eu tentei pela última vez, não funcionou) esses dias, então, seus acessos a arquivos podem bloquear, dependendo se a sua rede pode lidar com as mudanças. Estas são todas as advertências teóricas, mas vale a pena investigar, dependendo do que seu aplicativo faz.

    
por 21.06.2010 / 21:31
8

Eu finalmente consegui resolver isso usando o GlusterFS em ambas as caixas. Algumas coisas aprendidas no processo:

  • Primeiro, tentei uma configuração genérica do RAID 1. O principal problema com isso é que o cliente sempre usa o tcp para contatar os dois servidores, mesmo quando um deles está na mesma máquina. Então eu tenho que mudar as configurações do cliente para substituir o volume 'local' do tpc com um volume de acesso direto (armazenamento / posix)
  • Para evitar sobrecarregar o link da rede, cada cliente lê usando o armazenamento local com a diretiva option read-subvolume . Claro que para manter a integridade do RAID1, o GlusterFS sempre verifica outros volumes também, mas o arquivo real é recuperado diretamente do disco
  • O desempenho é bom, mas o processo do cliente parece um abraço de memória. Eu acho que está relacionado ao volume de leitura rápida, eu preciso investigar mais

Configuração do cliente modificada:

# Server1 configuration (RAID 1)
volume server2-tcp
    type protocol/client
    option transport-type tcp
    option remote-host server2
    option transport.socket.nodelay on
    option transport.remote-port 6996
    option remote-subvolume brick1
end-volume

volume posix-local
    type storage/posix
    option directory /shared
end-volume

volume locks-local
    type features/posix-locks
    subvolumes posix-local
end-volume

volume brick-local
    type performance/io-threads
    option thread-count 8
    subvolumes locks-local
end-volume

volume mirror-0
    type cluster/replicate
    option read-subvolume brick-local
    subvolumes brick-local server2-tcp
end-volume

.....

Respondendo minhas duas perguntas:

It'll duplicate the files on the same box?

Não, o fs é montado usando o FUSE. Linha atual do / etc / fstab:

/etc/glusterfs/client.vol / mnt / padrões compartilhados glusterfs 0 0

Instead, should I use the filesystem directly, locally writing on /shared? Does the replication work in this way without mountin a client?

Não, sempre use volumes montados para fazer leitura / gravação, usando diretamente o sistema de arquivos pode levar a inconsistências.

    
por 26.06.2010 / 13:19
0

Seria muito mais fácil configurar rsync para fazer o espelhamento ativo , ou apenas configurar um compartilhamento nfs e ter ambos puxam da mesma unidade real.

    
por 30.05.2010 / 16:59