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.