Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (GlusterFs) no Debian Lenny
Este artigo mostra como montar passo-a-passo um cluster com quatro servidores para distribuição de arquivos com alta disponibilidade usando GlusterFS no Debian Lenny.
Parte 4: Instalando e configurando o GlusterFS na estação cliente
Iremos agora configurar o cliente GlusterFS, em nosso caso no cliente1.exemplo.com.br.
Na estação cliente precisamos instalar o fuse e o GlusterFS. Ao invés de instalar o pacote libfuse2 a partir do repositório do Debian, instalaremos a versão que tem um melhor suporte para GlusterFS.
Primeiro instalamos os pré-requisitos novamente:
# aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev
Então agora pegaremos a última versão do fuse em:
Entremos através do shell no diretório tmp para fazermos o que segue acima:
# cd /tmp
# wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
# tar -zxvf fuse-2.7.4glfs11.tar.gz
# cd fuse-2.7.4glfs11
# ./configure
# make && make install
Depois baixaremos e instalaremos o GlusterFS (igual fizemos no servidor):
# cd /tmp/
# wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.2.tar.gz
# tar -xvfz glusterfs-2.0.2.tar.gz
# cd glusterfs-2.0.2
# ./configure --prefix=/usr > /dev/null
# make && make install
# ldconfig
# glusterfs - -version
Agora criaremos dois diretórios (lembre-se que estamos agora na máquina cliente):
# mkdir /mnt/glustersfs
# mkdir /etc/glusterfs
Agora criaremos o arquivo /etc/glusterfs/glusterfs.vol:
# vi /etc/glusterfs/glusterfs.vol
Tenha certeza que você usou o hostname ou endereço IP correto na opção option remote-host.
Bem pessoal, é somente isso! Agora podemos montar o sistema de arquivos GlusterFS em /mnt/glusterfs com um dos seguintes comandos:
# glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
ou
# mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
Agora você já pode ver o novo compartilhamento montado com o comando abaixo:
# df -h
Com este comando devem aparecer as unidades montadas em seu sistema, entre as informações que aparecerão, se tudo correr bem deve ter uma linha como a abaixo:
/etc/glusterfs/glusterfs.vol xxxGB xxxGB XXX% /mnt/glusterfs
Onde xxx são os respectivos espaços em seu NOVO STORAGE!
Atente para o seguinte... O tamanho de seu ARMAZENAMENTO DISTRIBUÍDO é calculado através da replication1 + replication2.
Ao invés de montar o compartilhamento GlusterFS manualmente no cliente, podemos modificar nosso querido /etc/fstab para que tudo seja montado automaticamente na hora do boot.
Adicione a linha abaixo usando o vi ou qualquer editor de texto de sua preferência.
# vi /etc/fstab
Reinicie o computador cliente e verifique se o ponto de montagem funcionou corretamente. Após o boot execute o comando "df -h" e verifique se o ponto de montagem aparece.
Na estação cliente precisamos instalar o fuse e o GlusterFS. Ao invés de instalar o pacote libfuse2 a partir do repositório do Debian, instalaremos a versão que tem um melhor suporte para GlusterFS.
Primeiro instalamos os pré-requisitos novamente:
# aptitude install sshfs build-essential flex bison byacc libdb4.6 libdb4.6-dev
Então agora pegaremos a última versão do fuse em:
Entremos através do shell no diretório tmp para fazermos o que segue acima:
# cd /tmp
# wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
# tar -zxvf fuse-2.7.4glfs11.tar.gz
# cd fuse-2.7.4glfs11
# ./configure
# make && make install
Depois baixaremos e instalaremos o GlusterFS (igual fizemos no servidor):
# cd /tmp/
# wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.2.tar.gz
# tar -xvfz glusterfs-2.0.2.tar.gz
# cd glusterfs-2.0.2
# ./configure --prefix=/usr > /dev/null
# make && make install
# ldconfig
# glusterfs - -version
Agora criaremos dois diretórios (lembre-se que estamos agora na máquina cliente):
# mkdir /mnt/glustersfs
# mkdir /etc/glusterfs
Agora criaremos o arquivo /etc/glusterfs/glusterfs.vol:
# vi /etc/glusterfs/glusterfs.vol
volume remote1
type protocol/client
option transport-type tcp
option remote-host server1.exemplo.com
option remote-subvolume brick
end-volume
volume remote2
type protocol/client
option transport-type tcp
option remote-host server2.exemplo.com
option remote-subvolume brick
end-volume
volume remote3
type protocol/client
option transport-type tcp
option remote-host server3.exemplo.com
option remote-subvolume brick
end-volume
volume remote4
type protocol/client
option transporte-type tcp
option remote-host server4.exemplo.com
option remote-subvolume brick
end-volume
volume replicate1
type cluster/replicate
subvolumes remote1 remote2
end-volume
volume replicate2
type cluster/replicate
subvolumes remote3 remote4
end-volume
volume distribute
type cluster/distribute
subvolumes replicate1 replicate2
end-volume
volume writebehind
type performance/write-behind
option window-size 1MB
subvolumes distribute
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes wirtebehind
end-volume
type protocol/client
option transport-type tcp
option remote-host server1.exemplo.com
option remote-subvolume brick
end-volume
volume remote2
type protocol/client
option transport-type tcp
option remote-host server2.exemplo.com
option remote-subvolume brick
end-volume
volume remote3
type protocol/client
option transport-type tcp
option remote-host server3.exemplo.com
option remote-subvolume brick
end-volume
volume remote4
type protocol/client
option transporte-type tcp
option remote-host server4.exemplo.com
option remote-subvolume brick
end-volume
volume replicate1
type cluster/replicate
subvolumes remote1 remote2
end-volume
volume replicate2
type cluster/replicate
subvolumes remote3 remote4
end-volume
volume distribute
type cluster/distribute
subvolumes replicate1 replicate2
end-volume
volume writebehind
type performance/write-behind
option window-size 1MB
subvolumes distribute
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes wirtebehind
end-volume
Tenha certeza que você usou o hostname ou endereço IP correto na opção option remote-host.
Bem pessoal, é somente isso! Agora podemos montar o sistema de arquivos GlusterFS em /mnt/glusterfs com um dos seguintes comandos:
# glusterfs -f /etc/glusterfs/glusterfs.vol /mnt/glusterfs
ou
# mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
Agora você já pode ver o novo compartilhamento montado com o comando abaixo:
# df -h
Com este comando devem aparecer as unidades montadas em seu sistema, entre as informações que aparecerão, se tudo correr bem deve ter uma linha como a abaixo:
/etc/glusterfs/glusterfs.vol xxxGB xxxGB XXX% /mnt/glusterfs
Onde xxx são os respectivos espaços em seu NOVO STORAGE!
Atente para o seguinte... O tamanho de seu ARMAZENAMENTO DISTRIBUÍDO é calculado através da replication1 + replication2.
Ao invés de montar o compartilhamento GlusterFS manualmente no cliente, podemos modificar nosso querido /etc/fstab para que tudo seja montado automaticamente na hora do boot.
Adicione a linha abaixo usando o vi ou qualquer editor de texto de sua preferência.
# vi /etc/fstab
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0
Reinicie o computador cliente e verifique se o ponto de montagem funcionou corretamente. Após o boot execute o comando "df -h" e verifique se o ponto de montagem aparece.
Fico imaginando como funcionaria em apenas dois computadores com tudo isso virtualizado...aff...:-P
Sem contar que achei mais simples do que a tradicional dobradinha DRDB + heartbeat...
Vou testar a solução em um ambiente virtualizado para ver se funfa..vai ajudar bastanta a resolver problemas de disponibilidade essa solução!!
[]´s