18
Sistemas Distribuídos Sistemas de Arquivos Distribuídos - GlusterFS Frederico Madeira LPIC-1, LPIC-2, CCNA [email protected] www.madeira.eng.br

GlusterFs

Embed Size (px)

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

Page 1: GlusterFs

Sistemas DistribuídosSistemas de Arquivos Distribuídos - GlusterFS

Frederico MadeiraLPIC­1, LPIC­2, [email protected]

Page 2: GlusterFs

É 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

Page 3: 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

Page 4: GlusterFs

Configuração

✔ Arquitetura Modular

➔ Pode ser configurado em modo standalone (1 servidor)

➔ O sistema pode crescer ao tempo de acordo com a necessidade

Page 5: GlusterFs

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

Page 6: GlusterFs

Arquitetura

AFR = Automatic File Replication

Page 7: GlusterFs

Configuração de um AFR

✔ Etapa 1: Configuração dos dois servidores✔ Etapa 2: Configuração do client

Page 8: GlusterFs

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

Page 9: GlusterFs

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

Page 10: GlusterFs

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

Page 11: GlusterFs

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

Page 12: GlusterFs

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

Page 13: GlusterFs

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'.

Page 14: GlusterFs

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

Page 15: GlusterFs

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

Page 16: GlusterFs

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

Page 17: GlusterFs

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.

Page 18: GlusterFs

Sistemas DistribuídosSistemas de Arquivos Distribuídos - GlusterFS

Frederico MadeiraLPIC­1, LPIC­2, [email protected]