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.
Por: Rodrigo Bonicenha Ferreira
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, segui todos os passos e comigo funcionou perfeitamente.
O que temos que saber antes de começar?
Este tutorial usou cinco sistemas, quatro servidores e um cliente, todos usando 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
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
Metendo a mão na massa - Configurando os servidores
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 (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) a partir do link que vos segue como veremos nos passos abaixo:
# cd /tmp
# wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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
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
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:
* Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Entremos através do shell no diretório tmp para fazermos o que segue acima:
# cd /tmp
# wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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.
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:
# 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 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
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.
Espero que todos tenham gostado e até a próxima.
Fonte: VivaoLinux
Postado Por: RedDeviL
Por: Rodrigo Bonicenha Ferreira
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, segui todos os passos e comigo funcionou perfeitamente.
O que temos que saber antes de começar?
Este tutorial usou cinco sistemas, quatro servidores e um cliente, todos usando 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
Código:
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
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
Metendo a mão na massa - Configurando os servidores
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 (Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...) a partir do link que vos segue como veremos nos passos abaixo:
# cd /tmp
# wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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
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
Código:
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 subvolumes brick end-volume
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:
* Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
Entremos através do shell no diretório tmp para fazermos o que segue acima:
# cd /tmp
# wget Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
# 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
Código:
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
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
Código:
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs defaults 0 0
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:
# 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 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
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.
Espero que todos tenham gostado e até a próxima.
Fonte: VivaoLinux
Postado Por: RedDeviL