Cómo instalar y configurar GlusterFS en Ubuntu

GlusterFS es un sistema de archivos de red gratuito, de código abierto y escalable, desarrollado primero por Gluster Inc. y más tarde por Redhat. Está diseñado específicamente para cargas de trabajo intensivas en datos, como almacenamiento en la nube, CDN y streaming multimedia. Es capaz de manejar petabytes de datos y, por tanto, puede servir a miles de clientes. Admite varios protocolos, como NFS, SMB, CIFS, HTTP y FTP. Con GlusterFS, puedes combinar diferentes recursos de almacenamiento en disco en un único espacio de nombres global.

En este tutorial aprenderemos a configurar un volumen GlusterFS replicado en Ubuntu 18.04.

Requisitos

  • Dos servidores ejecutando Ubuntu 18.04 con 2 GB de disco duro externo en cada uno.
  • Se configura una dirección IP estática 172.20.10.5 en el nodo1 y 172.20.10.6 en el nodo2.
  • Se ha configurado una contraseña de root en ambos servidores.

Cómo empezar

Antes de empezar, tendrás que actualizar ambos servidores con la última versión. Puedes actualizarlos ejecutando el siguiente comando en ambos servidores.

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

Una vez actualizados ambos servidores reinícialos para aplicar los cambios.

A continuación, tendrás que configurar la resolución de nombres de host en ambos servidores para que cada servidor pueda comunicarse entre sí por nombre de host. Puedes hacerlo editando el archivo /etc/hosts en ambos servidores:

nano /etc/hosts

Añade las siguientes líneas:

172.20.10.5 node1
172.20.10.6 node2

Guarda y cierra el archivo cuando hayas terminado.

Instalar GlusterFS

En primer lugar, tendrás que instalar el paquete GlusterFS en ambos servidores. Por defecto, GlusterFS no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio de GlusterFS en ambos servidores.

Primero, instala el paquete necesario con el siguiente comando:

apt-get install software-properties-common -y

A continuación, añade el repositorio con el siguiente comando:

add-apt-repository ppa:gluster/glusterfs-5

A continuación, instala el servidor GlusterFS con el siguiente comando:

apt-get install glusterfs-server -y

Una vez finalizada la instalación, 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; 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.

Crear almacenamiento GlusterFS

A continuación, tendrás que crear una partición en el disco duro externo(/dev/sdb) de 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 /glusterdata

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

mount.xfs /dev/sdb1 /glusterdata

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

nano /etc/fstab

Añade la siguiente línea:

/dev/sdb1 /glusterdata 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
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 volumen GlusterFS

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

gluster peer probe node2

Puedes listar el pool de almacenamiento con el siguiente comando:

gluster pool list

Deberías obtener la siguiente salida:

UUID					Hostname 	State
d049b519-9210-4bfa-a1c6-0d1454a88ea0	node2    	Connected 
dbb9252e-6082-4d31-aaef-1b99e0e0c369	localhost	Connected 

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

mkdir /glusterdata/vol1

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

gluster volume create vol1 replica 2 node1:/glusterdata/vol1 node2:/glusterdata/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:/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

También puedes ver la información sobre el volumen creado con el siguiente comando:

gluster volume info vol1

Deberías obtener la siguiente salida:

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

A continuación, monta el volumen creado en el directorio /mnt de 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 /mnt 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

El servidor GlusterFS ya está instalado y configurado. Es hora de probar la replicación entre dos nodos.

Primero, crea dos archivos en el nodo1:

touch /mnt/file1 /mnt/file2

Ahora, ve al nodo2 y ejecuta el siguiente comando:

ls -l /mnt/

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: d049b519-9210-4bfa-a1c6-0d1454a88ea0
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:/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 continuación, crea otros dos archivos en el nodo1:

touch /mnt/file3 /mnt/file4

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

service glusterd start

Ahora, comprueba el directorio /mnt en el nodo2:

ls -l /mnt/

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

Conclusión

Enhorabuena! has instalado y configurado con éxito el Volumen Glusterfs Replicado de dos nodos en el servidor Ubuntu 18.04. También puedes configurar Volumen Glusterfs Distribuido, Volumen Glusterfs Replicado Distribuido, Volumen Glusterfs Rayado y Volumen Glusterfs Rayado Distribuido.

Scroll al inicio