Como instalar e configurar o GlusterFS no Ubuntu 22.04
GlusterFS é um armazenamento distribuído gratuito, de código aberto e definido por software, desenvolvido pela Gluster Inc e depois pela Redhat. Ele fornece interfaces para armazenamento de objetos, blocos e arquivos e é usado para cargas de trabalho com alto uso de dados, como armazenamento em nuvem, CDN e streaming de mídia. Ele pode ser expandido de forma modular para armazenar vários petabytes de dados. Ele suporta vários protocolos, como NFS, SMB, CIFS, HTTP e FTP. É perfeitamente adequado para vários casos de uso que exigem o tratamento de grandes quantidades de dados.
Neste tutorial, aprenderemos como configurar o volume GlusterFS replicado no Ubuntu 22.04.
Requisitos
- Dois servidores rodando Ubuntu 22.04 com Hardisk externo de 2 GB em cada um.
- Um endereço IP estático 192.168.10.10 está configurado no nó1 e 192.168.10.11 está configurado no nó2.
- Uma senha root está configurada em ambos os servidores.
Começando
Antes de começar, é recomendável atualizar todos os pacotes do sistema em ambos os servidores. Você pode atualizá-los executando o seguinte comando em ambos os servidores.
apt-get update -y
apt-get upgrade -y
Depois que todos os pacotes do sistema forem atualizados, reinicie-os para aplicar as alterações.
Em seguida, você também precisará editar o arquivo /etc/hosts em ambos os servidores e configurar a resolução do nome do host para que cada servidor possa se comunicar com o outro pelo nome do host. Você pode fazer isso com o seguinte comando:
nano /etc/hosts
Adicione as seguintes linhas:
192.168.10.10 node1
192.168.10.11 node2
Salve e feche o arquivo quando terminar.
Instale o servidor GlusterFS
Por padrão, GlusterFS está disponível no repositório padrão do Ubuntu 22.04. Você pode instalá-lo em ambos os servidores usando o seguinte comando.
apt-get install glusterfs-server -y
Depois que o pacote GlusterFS for instalado, inicie o serviço GlusterFS e habilite-o para iniciar na inicialização com o seguinte comando:
systemctl start glusterd
systemctl enable glusterd
Você também pode verificar o status do serviço GlusterFS com o seguinte comando:
systemctl status glusterd
Você deverá ver a seguinte saída:
? glusterd.service - GlusterFS, a clustered file-system server
Loaded: loaded (/lib/systemd/system/glusterd.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2022-11-05 04:10:13 UTC; 7s ago
Docs: man:glusterd(8)
Process: 92014 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCC>
Main PID: 92015 (glusterd)
Tasks: 9 (limit: 4579)
Memory: 7.1M
CPU: 2.260s
CGroup: /system.slice/glusterd.service
??92015 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
Nov 05 04:10:11 ubuntu2204 systemd[1]: Starting GlusterFS, a clustered file-system server...
Nov 05 04:10:13 ubuntu2204 systemd[1]: Started GlusterFS, a clustered file-system server.
Quando terminar, você pode prosseguir para a próxima etapa.
Criar armazenamento GlusterFS
Para criar um armazenamento GlusterFS, você precisará de um disco rígido externo em ambos os servidores. Você também precisará criar uma partição em um disco rígido externo (/dev/sdb) em ambos os servidores.
Para criar uma nova partição em /dev/sdb, execute o seguinte comando:
fdisk /dev/sdb
Você deverá ver a seguinte saída:
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x06091fe8.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-4194303, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-4194303, default 4194303):
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Em seguida, formate a partição com o seguinte comando:
mkfs.xfs /dev/sdb1
Você deverá ver a seguinte saída:
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=131008 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
data = bsize=4096 blocks=524032, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
A seguir, crie um diretório para armazenamento GlusterFS em ambos os servidores com o seguinte comando:
mkdir /glustervolume
Em seguida, monte o disco /dev/sdb1 em um diretório /glustervolume.
mount.xfs /dev/sdb1 /glustervolume
Em seguida, edite o arquivo /etc/fstab e torne a montagem persistente durante a reinicialização:
nano /etc/fstab
Adicione a seguinte linha:
/dev/sdb1 /glustervolume xfs defaults 0 0
Salve e feche o arquivo e execute o seguinte comando para aplicar as alterações:
mount -a
Agora você pode verificar o diretório montado com o seguinte comando:
df -h
Você deverá ver a seguinte saída:
Filesystem Size Used Avail Use% Mounted on
tmpfs 393M 1.1M 392M 1% /run
/dev/sda2 79G 8.6G 67G 12% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 393M 4.0K 393M 1% /run/user/0
/dev/sdb1 2.0G 35M 2.0G 2% /glustervolume
Configurar o volume GlusterFS
Primeiro, você precisará criar um pool de armazenamento confiável adicionando node2 a node1. Para fazer isso, execute o seguinte comando no node1:
gluster peer probe node2
Você pode verificar o pool de armazenamento adicionado com o seguinte comando:
gluster pool list
Você deve obter a seguinte saída:
UUID Hostname State
52245177-ce2e-4217-8da5-2ee7a33dcf46 node2 Connected
b6da6e83-b1ea-46de-8904-1c5345b1c229 localhost Connected
Em seguida, crie um diretório brick em ambos os nós com o seguinte comando:
mkdir /glustervolume/vol1
A seguir, crie um volume denominado vol1 com duas réplicas:
gluster volume create vol1 replica 2 node1:/glustervolume/vol1 node2:/glustervolume/vol1
Em seguida, inicie o volume usando o seguinte comando:
gluster volume start vol1
Você pode verificar o status do volume criado com o seguinte comando:
gluster volume status
Você deve obter a seguinte saída:
Status of volume: vol1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/glustervolume/vol1 49152 0 Y 7198
Brick node2:/glustervolume/vol1 49152 0 Y 13214
Self-heal Daemon on localhost N/A N/A Y 6121
Self-heal Daemon on node2 N/A N/A Y 12768
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks
Agora você pode verificar as informações sobre o volume criado usando o seguinte comando:
gluster volume info vol1
Você deve obter a seguinte saída:
Volume Name: vol1
Type: Replicate
Volume ID: a1023sd6d-81rt-12a2-bc4e-a4gd156c5331
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/glustervolume/vol1
Brick2: node2:/glustervolume/vol1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
Em seguida, monte o volume criado no diretório /opt em ambos os nós editando o arquivo /etc/fstab para que seu volume fique disponível após a inicialização do servidor.
nano /etc/fstab
Adicione a seguinte linha:
localhost:/vol1 /opt glusterfs defaults,_netdev 0 0
Salve e feche o arquivo quando terminar. Em seguida, execute o seguinte comando para aplicar as alterações:
mount -a
Replicação de teste
Seu servidor GlusterFS agora está instalado e configurado. Agora é hora de testar a replicação entre os dois nós.
Primeiro, crie dois arquivos no node1:
touch /opt/test1 /opt/test2
Agora, vá para node2 e execute o seguinte comando:
ls -l /opt/
Você deverá ver os mesmos arquivos que criou no node1:
total 0
-rw-r--r-- 1 root root 0 Nov 7 13:42 file1
-rw-r--r-- 1 root root 0 Nov 7 13:42 file2
Agora, pare o serviço GlusterFS no node2 com o seguinte comando:
service glusterd stop
Em seguida, vá para node1 e verifique o status do par:
gluster peer status
Você deverá ver que o node2 foi desconectado:
Number of Peers: 1
Hostname: node2
Uuid: a134f146-1220-3avd-d3f6-1c2554a87sa1
State: Peer in Cluster (Disconnected)
Você também pode verificar o status do volume com o seguinte comando:
gluster volume status
Você deverá ver a seguinte saída:
Status of volume: vol1
Gluster process TCP Port RDMA Port Online Pid
------------------------------------------------------------------------------
Brick node1:/glustervolume/vol1 49152 0 Y 7987
Self-heal Daemon on localhost N/A N/A Y 8010
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks
A seguir, crie outros dois arquivos no node1:
touch /opt/test3 /opt/test4
Agora, vá para node2 e inicie o serviço GlusterFS com o seguinte comando:
service glusterd start
Agora, verifique o diretório /opt no node2:
ls -l /opt/
Você verá que todos os arquivos do node1 foram replicados e agora estão disponíveis.
total 0
-rw-r--r-- 1 root root 0 Nov 7 13:42 test1
-rw-r--r-- 1 root root 0 Nov 7 13:42 test2
-rw-r--r-- 1 root root 0 Nov 7 13:44 test3
-rw-r--r-- 1 root root 0 Nov 7 13:44 test4
Conclusão
Parabéns! você instalou e configurou com êxito um servidor Replicated Glusterfs de dois nós no servidor Ubuntu 22.04. Para mais informações, leia a página de documentação do GlusterFS. Sinta-se à vontade para me perguntar se tiver alguma dúvida.