Sistema de Arquivos Distribuídos no Debian (GlusterFS)

Cenário: Disponibilizar sistema de arquivos distribuído agregando espaço em servidores distintos na mesma rede para formar um único local de armazenamento redundante e escalável.
Equipamentos:

Captura de tela de 2015-09-03 14:35:57

  • Dois servidores atuando como DFS glusterfs servers;
  • Um servidor de distribuição atuando como cliente (glusterfs client) do DFS e fileserver (Samba – CIFS) para compartilhamento do ponto de montagem do DFS;
  • Cliente;

Nomes:
Servidor principal: glusterfs01.localdomain.com
Servidor secundário: glusterfs02.localdomain.com
Servidor de distribuição: fileserver.localdomain.com

Configurações:
Relacionamento de nomes (caso não exista registro no DNS);
Em todos os servidores atualizar o arquivo hosts:
127.0.0.1 localhost.localdomain localhost
192.168.0.102 glusterfs01.localdomain.com glusterfs01
192.168.0.103 glusterfs02.localdomain.com glusterfs02

Install GlusterFS:
#wget -O – http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.2/Debian/wheezy/pubkey.gpg | apt-key add –
#echo deb http://download.gluster.org/pub/gluster/glusterfs/3.5/3.5.2/Debian/wheezy/apt wheezy main > /etc/apt/sources.list.d/gluster.list
#apt-get update
#apt-get install [ glusterfs-server | glusterfs-client ]

Criar o pool:
root@glusterfs01:~# gluster peer probe glusterfs02.localdomain.com
Probe successful

Verificar o status do pool:
root@glusterfs01:~# gluster peer status
Number of Peers: 1
Hostname: glusterfs02.localdomain.com
Uuid: d19cb707-7b23-4d11-8e9c-183cd0a18d96
State: Peer in Cluster (Connected)

Criar o volume testvol com replica (mirroring):
root@glusterfs01:~# gluster volume create testvol replica 2 transport tcp glusterfs01.localdomain.com:/data glusterfs02.localdomain.com:/data
Creation of volume testvol has been successful. Please start the volume to access data.

Repare que o parâmetro replica 2 deve corresponder a quantidade de servidores no pool.

Iniciar o volume:
root@glusterfs01:~# gluster volume start testvol
Starting volume testvol has been successful

Caso apresente o erro “Starting volume testvol has been unsuccessful”, será necessário reiniciar o daemon GlusterFS no servidor secundário:
root@glusterfs02:~#/etc/init.d/glusterfs-server restart
root@glusterfs02:~# netstat -tap | grep glusterfsd
tcp 0 0 *:24010 *:* LISTEN 1458/glusterfsd
tcp 0 0 localhost.localdom:1021 localhost.localdo:24007 ESTABLISHED 1458/glusterfsd

Checar o status do volume:
root@glusterfs01:~# gluster volume info
Volume Name: testvol
Type: Replicate
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: glusterfs01.localdomain.com:/data
Brick2: glusterfs02.localdomain.com:/data

Por padrão, todos os clientes terão acesso ao volume. Para restringir o acesso basta executar:
root@glusterfs01:~#gluster volume set testvol auth.allow 192.168.0.110
Vale ressaltar que wildcards podem ser utilizados (ex. 192.168.0.* ou 192.168.0.110,192.168.0.111)

Montar o volume no FileServer:
root@fileserver:~#mkdir /mnt/glusterfs
root@fileserver:~#mount.glusterfs glusterfs01.localdomain.com:/testvol /mnt/glusterfs

Lembrando que qualquer servidor do pool pode ser usado como alvo (glusterfs01.localdomain.com ou glusterfs02.localdomain.com).

Montagem permanente (Fstab):
glusterfs01.localdomain.com:/testvol /mnt/glusterfs glusterfs defaults,_netdev 0 0

Todo o conteúdo criado ou inserido no diretório /mnt/glusterfs do FileServer, será replicado no diretório /data dos servidores membros do gluster (glusterfs01 e glusterfs02) fazendo assim o RAID 1.
Esse diretório deverá ser compartilhado com clientes Windows. Para clientes Linux, o volume testvol poderá ser mapeado diretamente no fstab das máquinas.

Expandindo o sistema:
root@glusterfs01:~#gluster volume add-brick testvol glusterfs03:/data glusterfs04:/data
root@glusterfs01:/data# gluster volume info
Volume Name: repvol
Type: Distributed-Replicate
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: glusterfs01:/data
Brick2: glusterfs02:/data
Brick3: glusterfs03:/data
Brick4: glusterfs04:/data

Nesse caso o sistema passa a ser RAID 01 (distribuído e replicado).
Para configurar o sistema como totalmente replicado (nesse caso RAID 5), será necessário recriar o volume adicionando os novos servidores.

Reduzir volume:
root@glusterfs01:~# gluster volume remove-brick testvolglusterfs02.localdomain.com:/data
Removing brick(s) can result in data loss. Do you want to Continue? (y/n)

Rebalanceamento do volume:
Esse comando é necessário executar sempre que houver uma alteração no volume (aumentar, reduzir, etc.).
root@glusterfs01:~#gluster volume rebalance testvol start

Fonte: http://www.gluster.org/community/documentation/index.php/Gluster_3.1_Filesystem_Administration_Guide

Anúncios

Uma opinião sobre “Sistema de Arquivos Distribuídos no Debian (GlusterFS)

  1. Pingback: GlusterFS – Ramon.RDM

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s