O que é Gluster
Gluster é um sistema de arquivos escalável e distribuído que agrega recursos de armazenamento em disco de vários servidores em um único namespace global.
Vantagens:
- Escalas para vários petabytes;
- Lida com milhares de clientes;
- Compatível com POSIX;
- Pode usar qualquer sistema de arquivos ondisk, que suporte atributos estendidos;
- Acessível usando protocolos padrão do setor como NFS e SMB;
- Fornece replicação, cotas, geo-replicação, snapshots e detecção de bitrot;
- Permite otimização para diferentes cargas de trabalho;
- Código Aberto.
Volume de Glusterfs distribuídos
Este é o tipo de volume que é criado por padrão, se nenhum tipo de volume for especificado. Aqui, os arquivos são distribuídos em vários bricks no volume. Assim, o arquivo1 pode ser armazenado apenas em brick1 ou brick2, mas não em ambos. Portanto, não há redundância de dados.
O objetivo para tal volume de armazenamento é dimensionar facilmente e barato o tamanho do volume. No entanto, isso também significa que uma falha de brick levará à perda completa de dados e deve-se confiar no hardware subjacente para proteção de perda de dados.
Vamos configurar agora um Storage Distribuído, com 2 servidores (server1, server2) como mostra a imagem acima.
Uso para essa configuração:
- S.O.: CentOS 8.2
- 01 Disco de 100GB
Antes, é importante adicionar nos hosts de cada server os nomes e IP de cada um. Exemplo em cada
/etc/hosts, tem que ter exatamente essas configurações:
cat /etc/hosts
192.168.0.199 server1
192.168.0.198 server2
Instale o Gluster nos 2 servidores. Instale o repo do CentOS gluster8:
# dnf -y install centos-release-gluster8
Ajuste o repo:
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Gluster-8.repo
Instale:
# dnf --enablerepo=centos-gluster8,PowerTools -y install glusterfs-server
Inicie o serviço:
# systemctl enable --now glusterd
Ajuste as regras de firewall:
# firewall-cmd --add-service=glusterfs --permanent
Reload no firewalld:
# firewall-cmd --reload
Em cada servidor tenho já formatado e montado o
/dev/sdb de 100GB, ponto de montagem
/glusterfs.
Agora, em todos os 2 servidores vamos criar um diretório comum entre eles:
# mkdir /glusterfs/distribuido
Agora vamos configurar o nosso gluster.
O server1:
# gluster peer probe server2
# gluster volume create vol_distributed transport tcp \
server1:/glusterfs/distribuido \
server2:/glusterfs/distribuido
Podes verificar o status com os comandos:
# gluster volume start vol_distributed
# gluster volume info
Vamos montar agora, instale o pacote "glusterfs-fuse". E para montar:
# mount.glusterfs server1,server2:/vol_distributed /mnt/gluster/
Bom, eu criei alguns arquivos para mostrar:
Agora vamos ver no server1:
No server2:
Tem a maneira mais elegante de se montar, usando um arquivo de conf. Crie o diretório "glusterfs" no seu
/etc/, isso se não existir, é claro (geralmente, em máquinas client não tem):
# mkdir /etc/glusterfs
E crie um arquivo e edita o mesmo:
# vim /etc/glusterfs/vol_distributed.vol
E adicione o conteúdo:
volume remote1
type protocol/client
option transport-type tcp
# aqui vai o nome do server1
option remote-host server1
# aqui vai o caminho completo onde foi criado o volume o gluster no server1
option remote-subvolume /glusterfs/distribuido
end-volume
volume remote2
type protocol/client
option transport-type tcp
# aqui vai o nome do server2
option remote-host server2
# aqui vai o caminho completo onde foi criado o volume o gluster no server1
option remote-subvolume /glusterfs/distribuido
end-volume
volume replicate
type cluster/replicate
subvolumes remote1 remote2
end-volume
volume writebehind
type performance/write-behind
option window-size 1MB
subvolumes replicate
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume
Salve e rode o comando pra montar:
# mount.glusterfs /etc/glusterfs/vol_distributed.vol /mnt/gluster
Como informado, essa forma é um pouco arriscada. Caso tenha problema em um server e não tiver backup, é um problemão!