Diretoria de Gestão de Tecnologia da Informação (DGTI)

7. Configuração do volume GlusterFS

Neste ponto o armazenamento local para as Máquinas Virtuais encontra-se definido na partição /dev/sda4 e montado na pasta /mnt/lv/vmstg, e o serviço Gluster instalado, configurado e funcional. Com isso, faz-se necessário definir um Volume Gluster que utilize a partição montada, para que a ferramenta viabilize a hiperconvergência com a replica das VMs entre os servidores.

Caso os 3 Servidores estejam com o Proxmox instalado, configurado, e o serviço Gluster também instalado e configurado, deve-se seguir os passos do tópico seguinte (7.1. CRIAÇÃO DO VOLUME DO TIPO RÉPLICA NOS 3 SERVDIORES). Caso somente 1 Servidor esteja nesse estado, deve-se pular o tópico seguinte e ir para o próximo (7.2. CRIAÇÃO DO VOLUME DO TIPO DISTRIBUÍDO EM 1 SERVIDOR).

7.1. CRIAÇÃO DO VOLUME DO TIPO RÉPLICA NOS 3 SERVIDORES

Neste cenário será criado um Volume Gluster do tipo Replicado simultaneamente nos 3 Servidores, visto que todos eles já possuem o Proxmox com o GlusterFS.

Os comandos seguintes só devem ser executados em um Hosts, sendo que os demais são configurados automaticamente pelo serviço Gluster.

Para verificar a definição atual do serviço Gluster, deve-se executar:

gluster pool list
gluster peer status

Mostrará o seguinte resultado, pois não há nenhum volume definido e os outros servidores ainda não fazem parte do Gluster:

UUID                                    Hostname        State
f65851be-3a13-4e43-9ba3-45a9054c4e5a    localhost       Connected 

Number of Peers: 0

A princípio é necessário adicionar os demais Servers ao pool do Gluster. Considerando que o pool está sendo configurado a partir do host 1, é necessário adicionar os Host 2 e 3 (mais uma vez, adaptar os nomes conforme o Campus):

gluster peer probe gluster2.reitoria.ifsertao-pe.edu.br
gluster peer probe gluster3.reitoria.ifsertao-pe.edu.br

Para conferir se foram adicionados:

gluster pool list
gluster peer status

Mostrará o seguinte resultado:

9e90a572-3d33-458e-a202-f0d9be1054bb  gluster2.reitoria.ifsertao-pe.edu.br  Connected 
06e41fd6-88fd-4c70-afca-e9b5ca80c144  gluster3.reitoria.ifsertao-pe.edu.br  Connected 
989a97bc-3743-48e3-864f-f226369610ce  localhost

Number of Peers: 3

Neste ponto o Volume Gluster pode ser criado. É interessante executar o comando seguinte antes. Ele indicará que nenhum volume foi configurado ainda.

gluster volume info

O comando seguinte cria o Volume GlusterFS, de nome "VMS" do tipo Réplica nos 3 Hosts. Conforme especificado após o nome dos Hosts no comando (depois do ":"), o volume utilizará o diretório /mnt/lv/vmstg onde a partição LVM foi montada anteriormente.

gluster volume create VMS replica 3 gluster1.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms gluster2.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms gluster3.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms

Agora é necessário iniciar o volume criado:

gluster volume start VMS

Para verifica o volume criado:

gluster volume info

Mostrará o seguinte resultado:

Volume Name: VMS
Type: Replicate
Volume ID: 632140b2-528a-40d1-a075-dc460b2ec023
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster1.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms
Brick2: gluster2.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms
Brick3: gluster3.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

Na saída é possível observar que o volume de nome "VMS" do tipo "Replicate" foi criado e iniciado e possui com 3 Bricks, indicando que o volume está configurado com os 3 Servidores.

É interessante acessar os outros 2 Servidores e verificar se o volume foi criado neles, executando os comandos de verificação anteriores:

gluster pool list
gluster peer status
gluster volume info

Neste ponto o volume está criado, inicializado, mas ainda não pode ser utilizado. É necessário montá-lo em um ponto de montagem (assim como foi feito na partição LVM anteriormente), executando os comandos seguintes.

Deve-se criar o ponto de montagem nos 3 Hosts do Cluster:

mkdir -p /vms

Deve-se configurar em seguida a montagem automática no boot do sistema, executando o seguinte comando:

No Host 1:

echo "gluster1:VMS /vms glusterfs defaults,_netdev,x-systemd.automount,backupvolfile-server=gluster2,backupvolfile-server=gluster3 0 0" >> /etc/fstab

No Host 2:

echo "gluster2:VMS /vms glusterfs defaults,_netdev,x-systemd.automount,backupvolfile-server=gluster1,backupvolfile-server=gluster3 0 0" >> /etc/fstab

No Host 3:

echo "gluster3:VMS /vms glusterfs defaults,_netdev,x-systemd.automount,backupvolfile-server=gluster1,backupvolfile-server=gluster2 0 0" >> /etc/fstab

Em cada Host executar a montagem em si com:

mount -a

E verificar se montou com sucesso:

df -h

Mostrará o seguinte resultado (exemplo da saída no Host 1):

...
gluster1:VMS  2.0T  35G  2.0T  2% /vms

Para testar se os dados estão sendo replicados executar o seguinte comando somente em um dos Hosts (serão criados 10 arquivos no volume Gluster configurado e montado em /vms):

for i in `seq -w 1 10`; do cp -rp /var/log/messages /vms/copy-test-$i; done

Então deve-se acessar cada Servidor e verificar se os arquivos estão presentes com o comando:

ls -lA /vms/copy*

Mostrará o seguinte resultado:

-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-01
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-02
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-03
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-04
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-05
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-06
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-07
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-08
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-09
-rw-r----- 1 root adm 320784 Oct  4 16:37 /vms/copy-test-10

O Volume GlusterFS criado e montado em /vms funciona como uma espécie de link para a partição LVM /dev/sda4, que foi criada anteriormente no tópico 4 deste manual. Logo, é interessante conferir também, em cada Host, se os arquivos foram criados na pasta onde a partição LVM foi montada (/mnt/lv/vmstg/vms). Os mesmos arquivos serão listados com o comando:

ls -lA /mnt/lv/vmstg/vms/copy*

Deve-se remover os arquivos criados para teste executando o seguinte comando em somente 1 dos Hosts (nos outros 2 serão removidos automaticamente pelo Gluster):

rm /vms/copy*

Com isso o Cluster de armazenamento hiperconvegente está configurado e pronto para uso. Contudo, ainda é necessário realizar o procedimento do capítulo 9 deste manual para que o Proxmox possa usar ele de fato. Logo, deve-se pular o tópico seguinte deste capítulo, pular também o capítulo 8. ADIÇÃO DE NOVOS SERVIDORES AO GLUSTERFS e ir seguir direto para o capítulo 9. FINALIZAÇÃO DO CLUSTER PROXMOX.

7.2. CRIAÇÃO DO VOLUME DO TIPO DISTRIBUÍDO EM 1 SERVIDOR

Neste cenário será criado um Volume Gluster do tipo Distribuído, já que não é possível criar um volume do tipo Replicado com somente somente 1 Servidor rodando o Proxmox com o GlusterFS. Quando os outros 2 Servidores forem unidos ao pool do serviço Gluster, esse volume será convertido para o tipo Réplica.

Para verificar a definição atual do serviço Gluster, deve-se executar:

gluster pool list
gluster peer status

Mostrará o seguinte resultado, pois não há nenhum volume definido e os outros Servidores ainda não fazem parte do Gluster:

UUID                                    Hostname        State
f65851be-3a13-4e43-9ba3-45a9054c4e5a    localhost       Connected 

Number of Peers: 0

É interessante executar o comando seguinte antes de se criar o volume. Ele indicará que nenhum volume foi configurado ainda.

gluster volume info

O comando seguinte cria o Volume GlusterFS, de nome "VMS" do tipo Distribuído no Host. Conforme especificado após o nome do Host no comando (depois do ":"), o volume utilizará o diretório /mnt/lv/vmstg onde a partição LVM foi montada anteriormente (mais uma vez, adaptar os nomes conforme o Campus).

gluster volume create VMS gluster1.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms

Agora é necessário iniciar o volume criado:

gluster volume start VMS

Para verificar o volume criado:

gluster volume info

Mostrará o seguinte resultado:

Volume Name: VMS
Type: Distribute
Volume ID: ...
Status: Started
Snapshot Count: 0
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: gluster1.reitoria.ifsertao-pe.edu.br:/mnt/lv/vmstg/vms
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

Na saída é possível observar que o volume de nome "VMS" do tipo "Distribute" foi criado e iniciado e possui com 1 Brick no Host 1, indicando que ele só foi configurado no Host atual.

Neste ponto o volume está criado, inicializado, mas ainda não pode ser utilizado. É necessário montar ele executando os comandos seguintes.

Deve-se criar o ponto de montagem:

mkdir -p /vms

Deve-se configurar em seguida a montagem automática no boot do sistema, executando o seguinte comando:

echo "gluster1:VMS /vms glusterfs defaults,_netdev,x-systemd.automount 0 0" >> /etc/fstab

Por fim deve-se realizar a montagem em si e verificar se montou com sucesso:

mount -a
df -h

Mostrará o seguinte resultado:

...
gluster1:VMS  2.0T  35G  2.0T  2% /vms

Com isso o serviço GlusterFS está configurado e o Volume "VMS" está funcional no Host em questão. Contudo, a solução deste manual ainda não foi finalizada, pois ela consiste em um Cluster Hiperconvergente com 3 Servidores.

Caso não se possa finalizar o Cluster ainda (para preservar o atual ambiente de virtualização em produção no Campus, por exemplo), deve-se seguir direto para o capítulo 9. FINALIZAÇÃO DO CLUSTER PROXMOX a fim de se configurar o Storage GlusterFS no Proxmox. Caso contrário, deve-se continuar no capítulo 8. ADIÇÃO DE NOVOS SERVIDORES AO GLUSTERFS.