View
3.913
Download
0
Category
Preview:
DESCRIPTION
Aula sobre o sistema de arquivos distribuído GlusterFS. Nesta aula é apresentado o GlusterFS e como realizar a configuração de um AFR e um cliente.
Citation preview
Sistemas DistribuídosSistemas de Arquivos Distribuídos - GlusterFS
Frederico MadeiraLPIC1, LPIC2, CCNAfred@madeira.eng.brwww.madeira.eng.br
É um sistema de arquivo open source, que trabalha em cluster e é capaz de escalar diversos petabytes e gerenciar milhares de clientes.
- GlusterFS User Guide at gluster.com
GlusterFS
Funcionalidades
Principais funcionalidades, implementadas através de tradutores:
✔ Replicação e espelhamento em nível de arquivos✔ Striping em nível de arquivos✔ Load balancing em nível de arquivos✔ Volume failover✔ Scheduling e disk caching✔ Storage quotas
Configuração
✔ Arquitetura Modular
➔ Pode ser configurado em modo standalone (1 servidor)
➔ O sistema pode crescer ao tempo de acordo com a necessidade
Características Importantes
✔ Sistema de arquivos distribuído e descentralizado
✔ Agregação de múltiplas unidades de armazenamento remotas (bricks) em um único volume
✔ Funcionalidades implementadas através de tradutores (translators)
✔ Descarta a necessidade da utilização de servidores de metadados
Arquitetura
AFR = Automatic File Replication
Configuração de um AFR
✔ Etapa 1: Configuração dos dois servidores✔ Etapa 2: Configuração do client
Configuração do Servidor✔Instalar os pacotes abaixo:
✗ glusterfs-server-2.0.8-1.el5.i386.rpm✗ glusterfs-common-2.0.8-1.el5.i386.rpm
[root@server3 ~]# rpm -ivh glusterfs-server-2.0.8-1.el5.i386.rpm
[root@server3 ~]# rpm -ivh glusterfs-common-2.0.8-1.el5.i386.rpm
[root@server3 ~]# cd /etc/glusterfs/
[root@server3 glusterfs]# cp glusterfsd.vol glusterfsd.vol_orig
[root@server3 glusterfs]# cat /dev/null > /etc/glusterfs/glusterfsd.vol
[root@server3 glusterfs]# vi /etc/glusterfs/glusterfsd.vol
Configuração do Servidor 1Arquivo de configuração: glusterfsd.vol
## Definindo os volumes
volume posix type storage/posix option directory /opt/data/exportend-volume
volume brick1 type features/posix-locks subvolumes posixend-volume
volume brick2 type protocol/client option transport-type tcp/client option remote-host 192.168.15.37 option remote-subvolume brick1 end-volume
Definições da pasta que será replicada com o outro servidor, chamada de posix
Implementação da feature de locks (trava de arquivos) para o volume posix, gerando o volume brick1
Declarando o volume brick1 do servidor 2 e a forma de comunicação com ele. Aqui será chamado de brick2
Configuração do Servidor 1Arquivo de configuração: glusterfsd.vol## Definindo operação do AFR
volume replicate type cluster/replicate subvolumes brick1 brick2end-volume
volume server type protocol/server option transport-type tcp/server subvolumes replicate option auth.ip.brick1.allow 192.168.15* option auth.ip.replicate.allow 192.168.15* option auth.ip.server.allow 192.168.15*end-volume
Define um novo volume chamado replicate que fará a replicação do brick1 no brick2
Recurso que o cliente irá utilizar. Neste caso o nome do volume será server
Declarando o volume brick1 do servidor 2 e a forma de comunicação com ele. Aqui será chamado de brick2
Configuração do Servidor 2Arquivo de configuração: glusterfsd.vol
## Definindo os volumes
volume posix type storage/posix option directory /opt/data/exportend-volume
volume brick1 type features/posix-locks subvolumes posixend-volume
volume brick2 type protocol/client option transport-type tcp/client option remote-host 192.168.15.40 option remote-subvolume brick1 end-volume
Definições da pasta que será replicada com o outro servidor, chamada de posix
Implementação da feature de locks (trava de arquivos) para o volume posix, gerando o volume brick1
Declarando o volume brick1 do servidor 2 e a forma de comunicação com ele. Aqui será chamado de brick2
Declarando o volume brick1 do servidor 1 e a forma de comunicação com ele. Aqui será chamado de brick2
Configuração do Servidor 2Arquivo de configuração: glusterfsd.vol## Definindo operação do AFR
volume replicate type cluster/replicate subvolumes brick1 brick2end-volume
volume server type protocol/server option transport-type tcp/server subvolumes replicate option auth.ip.brick1.allow 192.168.15* option auth.ip.replicate.allow 192.168.15* option auth.ip.server.allow 192.168.15*end-volume
Define um novo volume chamado replicate que fará a replicação do brick1 no brick2
Recurso que o cliente irá utilizar. Neste caso o nome do volume será server
Configuração do Servidor 1Arquivo de configuração: glusterfsd.vol
Após término das configurações em ambos servidores, será necessário iniciar/reiniciar o serviço do glusterfs.
[root@server3 glusterfs]# /etc/init.d/glusterfsd restart
Observe o arquivo de log:
[root@server3 glusterfs]# tail -f /var/log/glusterfs/-etc-glusterfs-glusterfsd.vol.log [2010-02-22 18:30:02] W [server-protocol.c:7569:get_auth_types] server: assuming 'auth.ip' to be 'auth.addr'[2010-02-22 18:30:02] W [server-protocol.c:7569:get_auth_types] server: assuming 'auth.ip' to be 'auth.addr'[2010-02-22 18:30:02] W [server-protocol.c:7569:get_auth_types] server: assuming 'auth.ip' to be 'auth.addr'[2010-02-22 18:30:02] N [afr.c:2194:notify] replicate: Subvolume 'brick1' came back up; going online.[2010-02-22 18:30:02] N [afr.c:2194:notify] replicate: Subvolume 'brick1' came back up; going online.[2010-02-22 18:30:02] N [glusterfsd.c:1306:main] glusterfs: Successfully started[2010-02-22 18:30:02] N [client-protocol.c:5733:client_setvolume_cbk] brick2: Connected to 192.168.15.37:6996, attached to remote volume 'brick1'.[2010-02-22 18:30:02] N [client-protocol.c:5733:client_setvolume_cbk] brick2: Connected to 192.168.15.37:6996, attached to remote volume 'brick1'.
Configuração do Cliente✔Instalar os pacotes abaixo:
✗ glusterfs-client-2.0.8-1.el5.i386.rpm✗ glusterfs-common-2.0.8-1.el5.i386.rpm
[root@server3 ~]# rpm -ivh glusterfs-client-2.0.8-1.el5.i386.rpm
[root@server3 ~]# rpm -ivh glusterfs-common-2.0.8-1.el5.i386.rpm
[root@server3 ~]# cd /etc/glusterfs/
[root@server3 glusterfs]# cp glusterfs.vol glusterfs.vol_orig
[root@server3 glusterfs]# cat /dev/null > /etc/glusterfs/glusterfs.vol
[root@server3 glusterfs]# vi /etc/glusterfs/glusterfs.vol
Configuração do(s) Cliente(s)Arquivo de configuração: glusterfs.vol
## Definindo o volume
volume brick type protocol/client option transport-type tcp/client option remote-host 192.168.15.40 option remote-subvolume serverend-volume
Definições do servidor/volume que será usado por este cliente. O nome do volume será server.
Declarando o volume brick1 do servidor 2 e a forma de comunicação com ele. Aqui será chamado de brick2
Configuração do Cliente
Após término das configurações do cliente, será necessário montar o volume remoto. No nosso caso, vamos montar na pasta /media/storage
[root@server3 glusterfs]# mount -t glusterfs /etc/glusterfs/glusterfs.vol /media/storage/
Observe o arquivo de log do servidor:
[root@server3 glusterfs]# tail -f /var/log/glusterfs/-etc-glusterfs-glusterfsd.vol.log [2010-02-22 18:30:03] N [server-protocol.c:7065:mop_setvolume] server: accepted client from 192.168.15.33:1021
[2010-02-22 18:30:03] N [server-protocol.c:7065:mop_setvolume] server: accepted client from 192.168.15.33:1014
[2010-02-22 18:30:11] N [server-protocol.c:7065:mop_setvolume] server: accepted client from 192.168.15.37:1023
[2010-02-22 18:30:12] N [server-protocol.c:7065:mop_setvolume] server: accepted client from 192.168.15.37:1022
Testes
1. Acesse a pasta /media/storage no cliente e crie um arquivo/diretório. Verifique nos dois servidores, na pasta /opt/data/export se os arquivos/diretórios criados estão presentes
2. Pare o serviço glusterfs no servidor 2 e refaça os testes acima. Observe que os dados serão gravados apenas no servidor 1. Inicie novamente o serviço no servidor 2 e em seguida liste o diretório /media/storage no cliente. Verifique se os servidores sincronizaram as informações.
Sistemas DistribuídosSistemas de Arquivos Distribuídos - GlusterFS
Frederico MadeiraLPIC1, LPIC2, CCNAfred@madeira.eng.brwww.madeira.eng.br
Recommended