Alta disponibilidade. Replicação. Raid via rede. Clone

GlusterFS – Um sistema de arquivos para alta disponibilidade

without comments

Depois de um longo tempo sem publicar nada no blog, estou de volta com um assunto interessante: GlusterFS.

Neste artigo irei mostrar como instalar e configurar o GlusterFS para criar um sistema de armazenamento de alta disponibilidade utilizando 2 servidores. Ambos os servidores serão client e server e cada servidor será espelho do outro onde os arquivos serão replicados automaticamente entre eles, ou seja, uma espécie de raid 1 via rede.

GlusterFS é um sistema de arquivos distribuído, capaz de escalar vários petabytes. Ele trabalha sob infiniband RDMA ou tcp/ip. Os desenvolvedores recomendam os sistemas de arquivos Ext3 e Ext4. Outros sistemas de arquivos, como ZFS, ReiserFS, btrfs, JFS, também funcionam, mas não foram amplamente testados. XFS tem vários problemas de desempenho devido a sua implementação atributos estendidos, se você optar por usar XFS seu desempenho utilizando Gluster será reduzido em pelo menos 60%.

Para seu funcionamento, você não precisa de nada em especial, pode utilizar seu hardware já existente, como por exemplo servidores com discos Sata/Sata-II ou ISCSI/SaS.

Os dados dos servidores a serem utilizados neste artigo são:
view source
print?
1 Servidor 01: 192.168.0.10
2 Servidor 02: 192.168.0.11
3 diretório a ser compartilhado: /var/www

É interessante você adicionar as seguintes entradas no /etc/hosts de cada servidor:
view source
print?
1 192.168.0.10 servidor01
2 192.168.0.11 servidor02

Como em artigos anteriores, este aqui também é baseado em debian. Os pacotes que iremos utilizar são glusterfs-client e glusterfs-server e a instalação segue o mesmo procedimento:
view source
print?
1 apt-get install glusterfs-client glusterfs-server

Depois de instalar os pacotes, entre no diretório /etc/glusterfs, nele você verá os seguintes arquivos:
view source
print?
1 glusterfs.vol
2 glusterfsd.vol

O primeiro arquivo é responsável pela configuração do client e o segundo do server. Como os servidores serão client e server ao mesmo tempo, a configuração destes arquivos precisa ser idêntica em ambas as máquinas.

Renomeie os arquivos e adicione .default ao final de cada um deles:
view source
print?
1 cd /etc/glusterfs
2 mv glusterfs.vol glusterfs.vol.default
3 mv glusterfsd.vol glusterfsd.vol.default

Crie o arquivo /etc/glusterfs/glusterfs.vol com o seguinte conteúdo:
view source
print?
1 # /etc/glusterfs client configuration file
2 #
3 volume client01
4 type protocol/client
5 option transport-type tcp/client
6 option remote-host servidor01
7 option remote-subvolume brick
8 end-volume
9
10 volume client02
11 type protocol/client
12 option transport-type tcp/client
13 option remote-host servidor02
14 option remote-subvolume brick
15 end-volume
16
17 volume replicate
18 type cluster/replicate
19 subvolumes client01 client02
20 end-volume
21
22 volume writeback
23 type performance/write-behind
24 option aggregate-size 1MB
25 subvolumes replicate
26 end-volume
27
28 volume cache
29 type performance/io-cache
30 option page-size 512MB
31 subvolumes writeback
32 end-volume

Crie o arquivo /etc/glusterfs/glusterfsd.vol com o seguinte conteúdo:
view source
print?
1 # /etc/glusterfs server configuration file
2 #
3 volume posix
4 type storage/posix
5 option directory /var/www
6 end-volume
7
8 volume locks
9 type features/locks
10 subvolumes posix
11 end-volume
12
13 volume brick
14 type performance/io-threads
15 option thread-count 8
16 subvolumes locks
17 end-volume
18
19 volume server
20 type protocol/server
21 option transport-type tcp
22 option auth.addr.brick.allow 192.168.0.10,192.168.0.11
23 subvolumes brick
24 end-volume

Para entender melhor as opções usadas nas configurações, sugiro dar uma lida na página de translators.

Com os arquivos configurados, inicie o daemon com o seguinte comando:
view source
print?
1 /etc/init.d/glusterfs-server start

Adicione a seguinte entrada no /etc/fstab de ambos os servidores:
view source
print?
1 /etc/glusterfs/glusterfs.vol /var/lib/glusterfs glusterfs defaults 0 0

Crie o diretório /var/glusterfs e monte o diretório:
view source
print?
1 mkdir /var/glusterfs
2 mount -a

Agora com tudo pronto em ambos os servidores, vamos realizar os seguintes testes:
view source
print?
1 – No servidor 01: Salve alguns arquivos no /var/glusterfs.
2 – Conecte no servidor 02 e veja se os arquivos estão lá.
3 – Execute um reboot no servidor 01.
4 – Veja se tudo está ok no servidor 02.
5 – Salve alguns arquivos no servidor 02.
6 – Quando o servidor 01 voltar, verifique no /var/glusterfs se os arquivos que você salvou quando ele estava fora foram replicados.
7 – Repita o procedimento mudando a ordem do servidores.

Você deve estar se perguntando porque estou me baseando no diretório /var/glusterfs e não no /var/www, isto porque para a replicação funcionar, os dados precisam ser gravados no /var/glusterfs.

E isto é tudo. Estando todos os testes ok, você agora tem um raid 1 vai rede :) .

Deixe um comentário