Como instalar e configurar o GlusterFS no Ubuntu
GlusterFS é um sistema de arquivos de rede gratuito, de código aberto e escalável, desenvolvido primeiro pela Gluster Inc. e posteriormente pela Redhat. Ele foi projetado especificamente para cargas de trabalho com uso intensivo de dados, como armazenamento em nuvem, CDN e streaming de mídia. É capaz de lidar com petabytes de dados e, portanto, atender milhares de clientes. Suporta vários protocolos como NFS, SMB, CIFS, HTTP e FTP. Com GlusterFS, você pode combinar diferentes recursos de armazenamento em disco em um único namespace global.
Neste tutorial aprenderemos como configurar um volume GlusterFS replicado no Ubuntu 18.04.
Requisitos
- Dois servidores rodando Ubuntu 18.04 com HDD externo de 2 GB em cada um.
- Um endereço IP estático 172.20.10.5 está configurado no nó1 e 172.20.10.6 está configurado no nó2.
- Uma senha root está configurada em ambos os servidores.
Começando
Antes de começar, você precisará atualizar ambos os servidores com a versão mais recente. Você pode atualizá-los executando o seguinte comando em ambos os servidores.
apt-get update -y
apt-get upgrade -y
Assim que ambos os servidores forem atualizados, reinicie-os para aplicar as alterações.
Em seguida, você precisará configurar a resolução do nome do host em ambos os servidores para que cada servidor possa se comunicar entre si pelo nome do host. Você pode fazer isso editando o arquivo /etc/hosts em ambos os servidores:
nano /etc/hosts
Adicione as seguintes linhas:
172.20.10.5 node1
172.20.10.6 node2
Salve e feche o arquivo quando terminar.
Instale o GlusterFS
Primeiro, você precisará instalar o pacote GlusterFS em ambos os servidores. Por padrão, GlusterFS não está disponível no repositório padrão do Ubuntu 18.04. Portanto, você precisará adicionar o repositório GlusterFS em ambos os servidores.
Primeiro, instale o pacote necessário com o seguinte comando:
apt-get install software-properties-common -y
Em seguida, adicione o repositório com o seguinte comando:
add-apt-repository ppa:gluster/glusterfs-5
Em seguida, instale o servidor GlusterFS com o seguinte comando:
apt-get install glusterfs-server -y
Assim que a instalação for concluída, 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; enabled; vendor preset: enabled)
Active: active (running) since Thu 2019-11-07 12:51:15 UTC; 48s ago
Main PID: 7199 (glusterd)
Tasks: 8 (limit: 505)
CGroup: /system.slice/glusterd.service
??7199 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
Nov 07 12:51:06 ubuntu systemd[1]: Starting GlusterFS, a clustered file-system server...
Nov 07 12:51:15 ubuntu systemd[1]: Started GlusterFS, a clustered file-system server.
Criar armazenamento GlusterFS
Em seguida, você precisará criar uma partição no 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
Em seguida, crie um diretório para armazenamento GlusterFS em ambos os servidores com o seguinte comando:
mkdir /glusterdata
Em seguida, monte o disco /dev/sdb1 em um diretório /glusterdata.
mount.xfs /dev/sdb1 /glusterdata
Em seguida, torne a montagem persistente durante a reinicialização editando o arquivo /etc/fstab:
nano /etc/fstab
Adicione a seguinte linha:
/dev/sdb1 /glusterdata 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
udev 211M 0 211M 0% /dev
tmpfs 49M 1016K 48M 3% /run
/dev/sda2 30G 4.3G 25G 16% /
tmpfs 241M 12K 241M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 241M 0 241M 0% /sys/fs/cgroup
/dev/loop0 87M 87M 0 100% /snap/core/4486
tmpfs 49M 0 49M 0% /run/user/0
/dev/loop1 90M 90M 0 100% /snap/core/7917
/dev/sdb1 2.0G 35M 2.0G 2% /glusterdata
Configurar o volume GlusterFS
Primeiro, você precisará criar um pool de armazenamento confiável adicionando node2 em node1. Para fazer isso, execute o seguinte comando no node1:
gluster peer probe node2
Você pode listar o pool de armazenamento com o seguinte comando:
gluster pool list
Você deve obter a seguinte saída:
UUID Hostname State
d049b519-9210-4bfa-a1c6-0d1454a88ea0 node2 Connected
dbb9252e-6082-4d31-aaef-1b99e0e0c369 localhost Connected
Em seguida, crie um diretório brick em ambos os nós com o seguinte comando:
mkdir /glusterdata/vol1
A seguir, crie um volume denominado vol1 com duas réplicas:
gluster volume create vol1 replica 2 node1:/glusterdata/vol1 node2:/glusterdata/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:/glusterdata/vol1 49152 0 Y 7987
Brick node2:/glusterdata/vol1 49152 0 Y 18565
Self-heal Daemon on localhost N/A N/A Y 8010
Self-heal Daemon on node2 N/A N/A Y 18588
Task Status of Volume vol1
------------------------------------------------------------------------------
There are no active volume tasks
Você também pode ver as informações sobre o volume criado com o seguinte comando:
gluster volume info vol1
Você deve obter a seguinte saída:
Volume Name: vol1
Type: Replicate
Volume ID: e093ae7a-70ac-42b8-ab3f-a8bd186c5740
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/glusterdata/vol1
Brick2: node2:/glusterdata/vol1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
Em seguida, monte o volume criado no diretório /mnt 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 /mnt 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
O servidor GlusterFS agora está instalado e configurado. É hora de testar a replicação entre dois nós.
Primeiro, crie dois arquivos no node1:
touch /mnt/file1 /mnt/file2
Agora, vá para node2 e execute o seguinte comando:
ls -l /mnt/
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: d049b519-9210-4bfa-a1c6-0d1454a88ea0
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:/glusterdata/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 /mnt/file3 /mnt/file4
Agora, vá para node2 e inicie o serviço GlusterFS com o seguinte comando:
service glusterd start
Agora, verifique o diretório /mnt no node2:
ls -l /mnt/
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 file1
-rw-r--r-- 1 root root 0 Nov 7 13:42 file2
-rw-r--r-- 1 root root 0 Nov 7 13:44 file3
-rw-r--r-- 1 root root 0 Nov 7 13:44 file4
Conclusão
Parabéns! você instalou e configurou com êxito o volume Glusterfs replicado de dois nós no servidor Ubuntu 18.04. Você também pode configurar Volume Glusterfs Distribuído, Volume Glusterfs Replicado Distribuído, Volume Glusterfs Listrado e Volume Glusterfs Distribuído Listrado.