Cómo instalar y configurar GlusterFS en Ubuntu 22.04

GlusterFS es un almacenamiento distribuido gratuito, de código abierto y definido por software, desarrollado por Gluster Inc, y posteriormente por Redhat. Proporciona interfaces para el almacenamiento de objetos, bloques y archivos, y se utiliza para cargas de trabajo de gran intensidad de datos, como el almacenamiento en la nube, la CDN y el streaming multimedia. Puede escalarse de forma modular para almacenar varios petabytes de datos. Soporta múltiples protocolos como NFS, SMB, CIFS, HTTP y FTP. Es perfectamente adecuado para diversos casos de uso que requieren el manejo de grandes cantidades de datos.

En este tutorial, aprenderemos a configurar un Volumen GlusterFS Replicado en Ubuntu 22.04.

Requisitos

  • Dos servidores que ejecuten Ubuntu 22.04 con un disco duro externo de 2 GB en cada uno.
  • Se configura una dirección IP estática 192.168.10.10 en el nodo1 y 192.168.10.11 en el nodo2.
  • Se ha configurado una contraseña de root en ambos servidores.

Cómo empezar

Antes de empezar, se recomienda actualizar todos los paquetes del sistema en ambos servidores. Puedes actualizarlos ejecutando el siguiente comando en ambos servidores.

apt-get update -y
apt-get upgrade -y

Una vez actualizados todos los paquetes del sistema, reinícialos para aplicar los cambios.

A continuación, también tendrás que editar el archivo /etc/hosts en ambos servidores y configurar la resolución de nombres de host para que cada servidor pueda comunicarse con el otro por nombre de host. Puedes hacerlo con el siguiente comando:

nano /etc/hosts

Añade las siguientes líneas:

192.168.10.10 node1
192.168.10.11 node2

Guarda y cierra el archivo cuando hayas terminado.

Instalar el servidor GlusterFS

Por defecto, GlusterFS está disponible en el repositorio por defecto de Ubuntu 22.04. Puedes instalarlo en ambos servidores utilizando el siguiente comando.

apt-get install glusterfs-server -y

Una vez instalado el paquete GlusterFS, inicia el servicio GlusterFS y habilítalo para que se inicie al arrancar con el siguiente comando:

systemctl start glusterd
systemctl enable glusterd

También puedes comprobar el estado del servicio GlusterFS con el siguiente comando:

systemctl status glusterd

Deberías ver la siguiente salida:

? 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.

Cuando hayas terminado, puedes pasar al siguiente paso.

Crear almacenamiento GlusterFS

Para crear un almacenamiento GlusterFS, necesitarás un disco duro externo en ambos servidores. También necesitarás crear una partición en un disco duro externo(/dev/sdb) en ambos servidores.

Para crear una nueva partición en /dev/sdb, ejecuta el siguiente comando:

fdisk /dev/sdb

Deberías ver la siguiente salida:

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.

A continuación, formatea la partición con el siguiente comando:

mkfs.xfs /dev/sdb1

Deberías ver el siguiente resultado:

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 continuación, crea un directorio para el almacenamiento GlusterFS en ambos servidores con el siguiente comando:

mkdir /glustervolume

A continuación, monta el disco /dev/sdb1 en un directorio /glustervolume.

mount.xfs /dev/sdb1 /glustervolume

A continuación, edita el archivo /etc/fstab y haz que el montaje sea persistente tras el reinicio:

nano /etc/fstab

Añade la siguiente línea:

/dev/sdb1 /glustervolume xfs defaults 0 0

Guarda y cierra el archivo y ejecuta el siguiente comando para aplicar los cambios:

mount -a

Ahora puedes comprobar el directorio montado con el siguiente comando:

df -h

Deberías ver la siguiente salida:

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 volumen GlusterFS

En primer lugar, tendrás que crear un pool de almacenamiento de confianza añadiendo el nodo2 al nodo1. Para ello, ejecuta el siguiente comando en el nodo1:

gluster peer probe node2

Puedes verificar el pool de almacenamiento añadido con el siguiente comando:

gluster pool list

Deberías obtener la siguiente salida:

UUID					Hostname 	State
52245177-ce2e-4217-8da5-2ee7a33dcf46	node2    	Connected 
b6da6e83-b1ea-46de-8904-1c5345b1c229	localhost	Connected 

A continuación, crea un directorio brick en ambos nodos con el siguiente comando:

mkdir /glustervolume/vol1

A continuación, crea un volumen llamado vol1 con dos réplicas:

gluster volume create vol1 replica 2 node1:/glustervolume/vol1 node2:/glustervolume/vol1

A continuación, inicia el volumen con el siguiente comando:

gluster volume start vol1

Puedes comprobar el estado del volumen creado con el siguiente comando:

gluster volume status

Deberías obtener la siguiente salida:

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

Ahora puedes comprobar la información sobre el volumen creado utilizando el siguiente comando:

gluster volume info vol1

Deberías obtener la siguiente salida:

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

A continuación, monta el volumen creado en el directorio /opt en ambos nodos editando el archivo /etc/fstab para que tu volumen esté disponible cuando arranque el servidor.

nano /etc/fstab

Añade la siguiente línea:

localhost:/vol1 /opt glusterfs defaults,_netdev 0 0

Guarda y cierra el archivo cuando hayas terminado. A continuación, ejecuta el siguiente comando para aplicar los cambios:

mount -a

Probar Replicación

Tu servidor GlusterFS ya está instalado y configurado. Ahora, es el momento de probar la replicación entre ambos nodos.

En primer lugar, crea dos archivos en el nodo1:

touch /opt/test1 /opt/test2

Ahora, ve al nodo2 y ejecuta el siguiente comando:

ls -l /opt/

Deberías ver los mismos archivos que has creado en el nodo1:

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

Ahora, detén el servicio GlusterFS en el nodo2 con el siguiente comando:

service glusterd stop

A continuación, ve al nodo1 y comprueba el estado de los pares:

gluster peer status

Deberías ver que el nodo2 se ha desconectado:

Number of Peers: 1

Hostname: node2
Uuid: a134f146-1220-3avd-d3f6-1c2554a87sa1
State: Peer in Cluster (Disconnected)

También puedes comprobar el estado del volumen con el siguiente comando:

gluster volume status

Deberías ver la siguiente salida:

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 continuación, crea otros dos archivos en el nodo1:

touch /opt/test3 /opt/test4

Ahora, ve al nodo2 e inicia el servicio GlusterFS con el siguiente comando:

service glusterd start

Ahora, comprueba el directorio /opt en el nodo2:

ls -l /opt/

Deberías ver que todos los archivos del nodo1 se han replicado y ahora están disponibles.

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

Conclusión

Enhorabuena! has instalado y configurado con éxito un servidor Glusterfs replicado de dos nodos en un servidor Ubuntu 22.04. Para más información, lee la página de documentación de GlusterFS. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...