Você está na página 1de 12

15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

REPLICANDO E DISTRIBUINDO ARMAZENAMENTO DE ARQUIVOS ATRAVÉS DE

QUATRO SERVIDORES USANDO CLUSTER (GLUSTERFS) NO DEBIAN LENNY

Autor: Rodrigo Bonicenha Ferreira <rodrigo.bonicenha at gmail.com>


Data: 03/07/2009

NOTAS PRELIMINARES

Esta é uma tradução de cujo o link para o texto original, site e autor seguem no final deste artigo.

Como sempre acompanhei aqui no VOL diversos artigos e os mesmos ajudaram muito em minha erudição,
o mínimo que posso fazer é contribuir traduzindo este excelente artigo, pois eu mesmo testei e tudo
funcionou perfeitamente. Espero que todos apreciem! : - )

INTRODUÇÃO

Este tutorial mostra como combinar quatro servidores de armazenamento (Debian Lenny) para distribuição e
replicação usando GlusterFS. Os nós 1 e 2 (replicação), assim como 3 e 4 (replicação) realizarão o
espelhamento entre si, já a replicação1 e a replicação2 combinarão entre si para formar um grande servidor
de armazenamento (distribuição).

Basicamente este é o RAID 1+0 ou 0+1 ou 10 (como achar melhor), sobre o padrão ethernet.

Se você perder um servidor da replicação1 e um da replicação2, a distribuição dos volumes continua


trabalhando normalmente.

O sistema cliente (Debian Lenny) irá acessar o armazenamento como se ele tivesse acessando um volume
local (file system) sem sentir a perda de qualquer um dos servidores. O GlusterFS é um cluster capaz de
escalar diversos petabytes de armazenamento. Isso agregado a vários blocos de armazenamento sobre
uma infinita interconexão TCP/IP dentro de um grande sistema de arquivos em rede rodando em
paralelismo. Estes armazenamentos em blocos podem ser feitos com hardware usando arquitetura X86-64 e
com SATA-II RAID.

P.S. 1: O autor deste artigo não fornece nenhuma garantia que este artigo irá funcionar com você!

P.S. 2: Eu, mero aprendiz neste maravilhoso mundo Linux (//www.vivaolinux.com.br/linux/), segui todos os
passos e comigo funcionou perfeitamente.

O QUE TEMOS QUE SABER ANTES DE COMEÇAR?

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 1/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

Este tutorial usou cinco sistemas, quatro servidores e um cliente, todos usando Linux
(//www.vivaolinux.com.br/linux/) (Debian Lenny):

server1.exemplo.com.br: IP address 192.168.0.100 (server)


server2.exemplo.com.br: IP address 192.168.0.101 (server)
server3.exemplo.com.br: IP address 192.168.0.102 (server)
server4.exemplo.com.br: IP address 192.168.0.103 (server)
cliente1.exemplo.com.br: IP address 192.168.0.104 (cliente)

Todos os cinco sistemas deverão estar resolvendo/comunicando entre si. Se você não conseguir fazer isso
através do DNS, deverá editar o arquivo /etc/hosts para que os sistemas consigam se comunicar.

Caso você não esteja conseguindo fazer o mesmo, aqui vai uma ajudinha para desenferrujar sua memória...

Abra o arquivo /etc/hosts com o VI ou qualquer editor de sua preferência e siga os passos abaixo:

# vi /etc/hosts

127.0.0.1 localhost.localdomain localhost


192.168.0.100 server1.exemplo.com server1
192.168.0.101 server2.exemplo.com server2
192.168.0.102 server3.exemplo.com server3
192.168.0.103 server4.exemplo.com server4
192.168.0.104 cliente1.exemplo.com cliente1

# As seguintes linhas são desejáveis para hosts Ipv6


::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Após digitar as linhas acima, salve e saia do arquivo /etc/hosts.

P.S. 3: Senhores, notem que também é possível usar o endereçamento IP ao invés de hostnames, lembrem-
se, somos livres!!! Se você preferir usar o endereçamento IP, não precisará ter cuidado para que os
computadores possam ser resolvidos por nome, pois serão resolvidos somente por IP, para isso teremos
que simplesmente apontar os endereços IPs quando for a hora de configurar o GlusterFS nos servidores.

METENDO A MÃO NA MASSA - CONFIGURANDO OS SERVIDORES


https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 2/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

Agora configuraremos os servidores GlusterFS (realize os passos abaixo em todos os servidores).

O GlusterFS não está disponível como um pacote Debian (já se encontra sim, porém achei melhor baixar e
instalar seguindo fielmente o artigo original), consequentemente teremos que instalar o mesmo na mão.

Primeiro instalaremos os pré-requisitos:

# aptitude install sshfs build-essential flex bison byacc libdb4.6


libdb4.6-dev

Após instalar os pré-requisitos faremos o download da última versão do GlusterFS


(http://www.gluster.org/download.php (http://www.gluster.org/download.php)) a partir do link que vos segue
como veremos nos passos abaixo:

# cd /tmp
# wget http://ftp.gluster.com/pub/gluster/glusterfs/2.0/LATEST/glusterfs-2.0.2.tar.gz
(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

No shell, após realizar os comandos acima, digite o comando abaixo e verá a saída que segue:

# ./configure --prefix=/usr > /dev/null

GlusterFs configure summary


===============
Fuse client : no
Infiniband verbs : no
epoll IO multiplex : yes
Berkeley-DB : yes
libglusterfsclient : yes
mod_glusterfs : no ()
argp-standalone : no

Agora, ainda dentro de /tmp/gluterfs-2.0.2:

# make && make install


# ldconfig

Após isso rode o comando:

# glusterfs --version
https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 3/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

A saída do comando acima irá lhe mostrar a versão que você instalou, deve ficar igual abaixo (neste caso
2.0.2):

# glusterfs --version
glusterfs 2.0.2 built on JULY 29 2009 17:23:10
Repository revision: 5c1d9108c1529a1155963cb1911f8870a674ab5b
Copyright (c) 2006-2009 Z RESEARCH Inc. <http://www.zresearch.com>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GlusterFS under the terms of the GNU General Public License.

Agora criaremos alguns diretórios:

# mkdir /data/
# mkdir /data/export
# mkdir /data/export-ns
# mkdir /etc/glusterfs

Agora criaremos o arquivo de configuração do servidor GlusterFS em /etc/glusterfsd.vol, pois é este arquivo
que define qual diretório será exportado (/data/export) e qual cliente poderá conectar.

Em nosso exemplo usamos o 192.168.0.104 = cliente1.exemplo.com.br, lembra-se?

# vi /etc/glusterfs/glusterfsd.vol

volume posix
type storage/posix
option directory /data/export
end-volume

volume locks
type features/locks
subvolumes posix
end-volume

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

volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow 192.168.0.104
https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 4/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

subvolumes brick
end-volume

Salve e saia do arquivo de configuração /etc/glusterfsd.vol.

Por favor, note que é possível usar uma gama infinita de endereços IP fazendo o permissionamento usando
toda uma faixa de endereços IP, por exemplo, 192.168.* fará com que toda a rede 192.168.X.X acesse o
volume. Você também pode usar a vírgula para separar diversos endereços IP, por exemplo: 192.168.0.120,
192.168.0.121, 192.168.0.122.

Lembrem-se que aqui neste artigo está sendo mostrado como implementar um servidor CLUSTER para
garantir alta disponibilidade de arquivos e não para visar 100% de segurança, para isso devemos usar
outros meios.

Após as configurações acima devemos criar os links para inicialização do script nos servidores com o
comando que segue abaixo:

# update-rc.d glusterfsd defaults

Após atualizar o update-rc, damos início ao script glusterfsd:

# /etc/init.d/glusterfsd start

Pronto, a primeira parte está feita!

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:

ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/ (ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/)

Entremos através do shell no diretório tmp para fazermos o que segue acima:

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 5/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

# cd /tmp
# wget ftp://ftp.zresearch.com/pub/gluster/glusterfs/fuse/fuse-2.7.4glfs11.tar.gz
(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
(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

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 6/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

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

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 7/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

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.

VERIFICANDO CONFIGURAÇÕES

TESTANDO...

Agora criaremos alguns arquivos de teste em nosso compartilhamento e faremos uma bateria de testes para
verificar se tudo funcionou como deveria.

Na máquina cliente execute os comandos abaixo:

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 8/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

# touch /mnt/glusterfs/teste1
# touch /mnt/glusterfs/teste2
# touch /mnt/glusterfs/teste3
# touch /mnt/glusterfs/teste4
# touch /mnt/glusterfs/teste5
# touch /mnt/glusterfs/teste6

Agora vamos checar o diretório /data/export dos servidores. Você verá que a replicação1, assim como a
replicação2, pegaram parte dos arquivos e diretórios que compõem o compartilhamento GlusterFS na
máquina cliente.

Perceba também que compõem a replicação1 (server1 e server2) e a replicação2 (server3 e server4) e que
ambos contém os mesmos arquivos (espelhamento).

No servidor server1.example.com execute o comando abaixo:

# ls -l /data/export

Veremos que a saída deve ser igual a mostrada abaixo:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste1
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste2
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste4
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste5

Veremos a saída agora estando no servidor server2.example.com, executemos o comando abaixo:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste1
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste2
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste4
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste5

Veremos a saída agora estando no servidor server3.example.com, execute no shell o comando abaixo e
observe atentamente a saída:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste3
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste6

Por fim, porém não menos importante, veremos a saída estando conectado no servidor

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 9/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

server4.example.com, execute no shell o comando abaixo:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste3
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste6

VERIFICANDO E TESTANDO ALTA DISPONIBILIDADE

Agora derrubaremos o servidor server1.example.com e server4.example.com e adicionaremos e


deletaremos alguns arquivos em nosso compartilhamento GlusterFS na máquina cliente.

Primeiro derrube os servidores server1.example.com e server4.example.com com o comando abaixo:

# shutdown -h now

Agora na máquina cliente deletaremos os arquivos teste5 e teste6:

# rm -fv /mnt/glusterfs/teste5
# rm -fv /mnt/glusterfs/teste6

As mudanças deverão estar visíveis no diretório /data/export no server2 e no server3.

Estando conectado no server2, execute o comando:

# ls -l /data/export

Teremos a saída abaixo:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste1
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste2
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste4

Estando agora conectado ao server3, execute o comando:

# ls -l /data/export

Teremos a saída abaixo:

# ls -l /data/export

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 10/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste3

Vamos agora iniciar o server1 e o server4 e novamente vamos dar uma olhada nos diretórios /data/export de
ambos os servidores com o comando abaixo.

No server1 digite o comando:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste1
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste2
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste4
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste5

No server4 digite o comando:

# ls -l /data/export
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste3
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste6

Como podemos ver o server1 e server4 não tem a notícia que aconteceram mudanças enquanto eles
estavam desligados. Isso é fácil de se resolver, tudo que precisamos fazer é executar o comando de leitura
no compartilhamento da máquina cliente (cliente1.exemplo.com.br).

Execute o comando abaixo e verifique a saída do mesmo (Na máquina cliente):

# ls -l /mnt/glusterfs/
total 0
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste1
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste2
-rw-r--r-- 1 root root 0 2009-07-01 15:02 teste3
-rw-r--r-- 1 root root 0 2009-07-01 15:01 teste4

Agora, para confirmar que está tudo funcionando direitinho, caso você execute o comando "ls -l" nos
servidores server1 e server2, verá que as modificações foram replicadas para os mesmos com sucesso.

Enfim, este maravilhoso artigo acabou, fiz algumas modificações nos exemplos e também na tradução para
que a mesma seja de fácil compreensão as amigos que estão iniciando no mundo Linux
(//www.vivaolinux.com.br/linux/).

Espero que todos tenham gostado e até a próxima.

Traduzido e editado por: Rodrigo Bonicenha Ferreira


E-mail: rodrigo.bonicenha@gmail.com / moderador_rj@hotmail.com

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 11/12
15/12/2022 23:14 Replicando e distribuindo armazenamento de arquivos através de quatro servidores usando Cluster (Gluste…

Este artigo foi retirado do site www.howtoforge.com (https://www.howtoforge.com), o título original é:


Distributed Replicad Storage Across Four Storage Nodes With GlustersFS on Debian Lenny
(https://www.howtoforge.com/distributed-storage-across-four-storage-nodes-with-glusterfs-on-debian-lenny)

Obrigado a todos pela leitura e um forte abraço para comunidade VOL.

Até a próxima!!!

 Voltar (verArtigo.php?codigo=10121)

https://www.vivaolinux.com.br/artigos/impressora.php?codigo=10121 12/12

Você também pode gostar