Fala Jovens, Rafael aqui! Continuando nosso caminho rumo a alto disponibilidade de dois hosts Proxmox. Hoje iremos falar sobre um camaradinha chamado GlusterFS, este cara é a cereja do bolo quando assunto é alto disponibilidade com baixos recursos.
CONSIDERAÇÕES
Vou levar em consideração que você realmente está interessado em aprender como fazer esta alto disponibilidade funcionar, e que para chegar a um tema como este, tem noção do que estamos falando aqui.
REFRESCANDO A MEMÓRIA: O QUE É GLUSTERFS?
Gluster é um sistema de arquivos distribuído e escalonável que agrega recursos de armazenamento em disco de vários servidores em um único namespace global.
Vantagens:
- Escala para vários petabytes.
- Lida com milhares de clientes.
- POSIX compatível.
- Usa hardware comum.
- Pode usar qualquer sistema de arquivos ondisk que suporte atributos estendidos
- Acessível usando protocolos padrão da indústria, como NFS e SMB
- Fornece replicação, cotas, replicação geográfica, instantâneos e detecção de bitrot
- Permite a otimização para diferentes cargas de trabalho
- Código aberto
Fonte: (https://docs.gluster.org/en/latest/Administrator-Guide/GlusterFS-Introduction/).
INTRODUÇÃO
Mas Rafa o que vamos fazer aqui?
Bem meu amigo, nos vamos montar um GlusterFS sobre um partição LVM formatada com XFS dentro de nossos dois hosts do Cluster, de forma a servir para cada um dos nós um espaço de armazenamento. Iremos utilizar a função de replicação do GlusterFS para replicar os dados de nossas VMs alocadas em discos locais de um host para outro.
Resumindo: Criaremos um sistema de alto disponibilidade entre dois hosts de forma a replicar dados entre discos locais.
1) ATUALIZANDO GLUSTERFS.
No Proxmox de versão 6.4-4 utilizado neste artigo, vem por padrão com a versão do Glusterfs 5.5-3, mas gostaríamos de utilizar a última versão estável disponível. Para isso, precisamos atualiza-lo.
No próprio site de documentação do GlusterFS existe o passa a passo para realizar a atualização no sistema Debian, exatamente esses passos que iremos utilizar aqui.
Adicione a chave GPG:
wget -O - https://download.gluster.org/pub/gluster/glusterfs/7/rsa.pub | apt-key add -
Crie um arquivo no source.list.d com repositório oficial do GlusterFS:
DEBID=$(grep 'VERSION_ID=' /etc/os-release | cut -d '=' -f 2 | tr -d '"')
DEBVER=$(grep 'VERSION=' /etc/os-release | grep -Eo '[a-z]+')
DEBARCH=$(dpkg --print-architecture)
echo deb https://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/${DEBID}/${DEBARCH}/apt ${DEBVER} main > /etc/apt/sources.list.d/gluster.list
Atualize e instale os pacotes necessários.
root@pve1:~# apt update
root@pve1:~# apt install glusterfs-server
OBS: O passa a passa para instalação e atualização você pode encontrar no próprio site do GlusterFS.
2) INICIALIZANDO O GLUSTERFS.
Agora que já realizamos a atualização, precisamos startar nosso GlusterFS de forma que ele sempre execute ao iniciar nosso proxmox. Para isso, iremos utilizar novamente o systemD, como ilustrado abaixo:
Proxmox host pve1:
root@pve1:~# systemctl start glusterd.service
root@pve1:~# systemctl enable glusterd.service
Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /lib/systemd/system/glusterd.service.
Realize o procedimento acima em todos os nós do Cluster de forma que o serviço fique ativo em todos eles mesmo após serem reiniciados.
Proxmox host pve2:
root@pve2:~# systemctl start glusterd.service
root@pve2:~# systemctl enable glusterd.service
Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /lib/systemd/system/glusterd.service.
3) ADICIONANDO HOSTS AO GLUSTERFS.
Com os serviços iniciados em ambos os nós de nosso Cluster, precisamos agora adiciona-los ao mesmo conjunto. Para isso, vamos acessar nosso host pve1 e inserir o gluster peer probe como ilustrado abaixo:
root@pve1:~# gluster peer probe pve2
peer probe: success
O mesmo iremos fazer para o nosso host pve2, só que desta vez apontando para o pve1.
root@pve2:~# gluster peer probe pve1
peer probe: success
Feito isso, execute o comando gluster peer status em cada um dos hosts do Cluster, como ilustrado abaixo:
root@pve1:~# gluster peer status
Number of Peers: 1
Hostname: pve2.oliveira.com
Uuid: 0f9144b0-7418-4e69-b2ee-4e155948f405
State: Peer in Cluster (Connected)
Other names:
pve2
root@pve2:~# gluster peer status
Number of Peers: 1
Hostname: pve1
Uuid: ae651f5a-0c1c-4eac-a6b0-2df6aa8aebe5
State: Peer in Cluster (Connected)
4) CRIANDO VOLUME NO GLUSTERFS.
Agora com nosso GlusterFS ativo, vamos criar nosso volume lógico replicando entre os dois hosts do Cluster, como ilustrado abaixo:
root@pve1:~# gluster vol create VMS replica 2 pve1:/data/vms pve2:/data/vms
Replica 2 volumes are prone to split-brain. Use Arbiter or Replica 3 to avoid this. See: http://docs.gluster.org/en/latest/Administrator%20Guide/Split%20brain%20and%20ways%20to%20deal%20with%20it/.
Do you still want to continue?
(y/n) y
volume create: VMS: success: please start the volume to access data
Ao executar o comando somos perguntados se desejamos realizar uma replica com somente 2 hosts, sendo que o ideal é 3, conforme documentação.
OBS: (Ideal, mas não é a realidade da geral. Já é difícil ter dois hosts com similaridade de configurações em empresas de pequeno porte, imagina 3? Importante entender o conceito de Cluster e HA aqui, a mensagem está corretíssima).
Iremos digitar “y” para continuar.
Feito isso, temos o nosso primeiro volume GlusterFS criado.
Agora precisamos inicia-lo para que possamos utilizar o volume. Caso contrario o volume não será acessível
root@pve1:~# gluster vol start VMS
volume start: VMS: success
root@pve1:~# gluster vol status VMS
volume start: VMS: success
5) INICIALIZANDO DE FORMA AUTOMATICA O VOLUME GLUSTERFS.
Para que nosso volume GlusterFS, chamado VMS, seja inicializado de forma automática, precisamos configura-lo também em um script de inicialização para subir junto com os hosts.
Iremos realizar nossa script de inicialização também através de uma target do SystemD. Para isso, vamos criar um arquivo chamado vms.mount dentro de /etc/systemd/system/, como ilustrado abaixo:
Proxmox host pve1:
[Unit]
Description=GlusterFS Mount
After=glusterd.service
Requires=glusterd.service
[Mount]
What=pve1:VMS
Where=/vms
Type=glusterfs
Options=defaults,_netdev,backupvolfile-server=pve2
[Install]
WantedBy=multi-user.target
root@pve1:/# systemctl daemon-reload
root@pve1:/# systemctl enable vms.mount
Created symlink /etc/systemd/system/multi-user.target.wants/vms.mount → /etc/systemd/system/vms.mount.
Proxmox host pve2:
[Unit]
Description=GlusterFS Mount
After=glusterd.service
Requires=glusterd.service
[Mount]
What=pve2:VMS
Where=/vms
Type=glusterfs
Options=defaults,_netdev,backupvolfile-server=pve1
[Install]
WantedBy=multi-user.target
root@pve2:/# systemctl daemon-reload
root@pve2:~# systemctl enable vms.mount
Created symlink /etc/systemd/system/multi-user.target.wants/vms.mount → /etc/systemd/system/vms.mount.
6) MONTANDO O VOLUME GLUSTERFS “VMS” PARA SERVIR AO STORAGE DO PROXMOX.
Agora por último, só precisamos entregar para nosso Cluster o volume a ser utilizado, e para isso, iremos utilizar a interface gráfica como ilustrado abaixo:
Precisamos apontar nosso diretório /vms para o Cluster. O ID pode ser qualquer nome que preferir, mas na opção diretório, é necessário que o nome informado seja exatamente o mesmo do volume GlusterFS, como ilustrado abaixo:
Pronto, nosso volume está criado e integrado ao storage do Cluster Proxmox. Já podemos criar nossas máquinas virtuais e testar as funcionalidades que essas configurações nos proporcionam.
CONCLUSÃO
Através deste artigo foi possível demostra como realizar a configuração do Sistema GlusterFS dentro do Proxmox, de forma a servir volumes replicados entre hosts do mesmo Cluster.
Se você gostou deste post e através dele pude lhe ajudar, o que acha de aproximarmos nosso contato? Siga meu blog, twitter e me adicione no Linkedin, aproveite para classificar algumas das minhas competências/recomendações, este simples gesto faz toda a diferença.
Att,
Rafael Oliveira
SysAdmin
4 respostas
Seu conteúdo é muito claro e de muita importância para quem deseja aprender ou melhorar seu ambiente em prod. Obrigado pelo seu trabablo!!!
Vlw Wilson! obrigado!
Olá, bom dia Rafael.
Primeiramente, eu gostaria de agracer imensamente por este ótimo tutorial que vc disponibilizou para todos sobre como montar um cluster GlusterFS! Valeu mesmo!!
Eu gostaria também de tirar uma dúvida sobre ele: no final vc diz que em “Directory” deve apontar para o mesmo volume que foi criado. Foi criado um volume em /data/vms , mas na tela exibida no Proxmox está digitado /vms … Isto está correto??
Felicidades.
Fala Wanilson, boa tarde!
Que bom que pude contribuir, fico feliz por isso!
Leve em consideração o /data/vms possivelmente eu devo ter criado um atalho /vms que aponte para o mesmo diretório, se não me engano é a base dos tutoriais anteriores.
Att,