Neste volume, superamos o risco de perda de dados que está presente no volume distribuído. Aqui, cópias exatas dos dados são mantidas em todos os bricks. O número de réplicas no volume pode ser decidido pelo cliente ao criar o volume.
Então, precisamos ter pelo menos dois bricks para criar um volume com 2 réplicas, ou um mínimo de 3 bricks para criar um volume de 3 réplicas. Uma grande vantagem de tal volume, é que mesmo que um brick falhe, os dados ainda podem ser acessados a partir de seus bricks replicados. Esse volume é usado para uma melhor confiabilidade e redundância de dados.
Vamos configurar agora um Storage Replicado, com 2 servidores (server1 e server2) como mostra a imagem acima.
O ideal seria com 3 server, mas com 2 só para demonstração. Uso para essa configuração:
- S.O. CentOS 8.2
- 01 Disco de 100GB (Storage)
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, já tenho 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/replicado
Vamos configurar o nosso gluster. O server1:
# gluster peer probe server2
# gluster volume create vol_replica replica 2 transport tcp \
server1:/glusterfs/replicado \
server2:/glusterfs/replicado
Bom, como falei, é recomentado e ideal em replicação usar 3 servers, mas 2 servers funciona, pois ele informa que o ideal é usar 3 servers.
Agora vamos montar:
# mount.glusterfs server1,server2:/vol_replica /mnt/gluster
Vamos criar 2 arquivos:
# touch /mnt/gluster/teste1
# touch /mnt/gluster/teste2
Vamos ver os arquivos no server1:
No server2:
Bom, tem a maneira mais elegante de se montar , usando um arquivo de configuração. 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 "vol_replica.vol":
# cat /etc/glusterfs/vol_replica.vol
volume remote1
type protocol/client
option transport-type tcp
option remote-host server1
option remote-subvolume /glusterfs/replicado
end-volume
volume remote2
type protocol/client
option transport-type tcp
option remote-host server2
option remote-subvolume /glusterfs/replicado
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
E para montar:
# mount.glusterfs /etc/glusterfs/vol_replica.vol /mnt/gluster