Pesquisa de site

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.

Artigos relacionados: