GlusterFS

GlusterFS es un gestor de ficheros en red. Básicamente lo que permite es replicar unos mismos ficheros en varios servidores, para luego con los clientes de glusterfs conectar a alguno de ellos y definir otro de backup en el caso de que se caiga el primero. Con éste sistema tenemos redundancia de los datos.

La recomendación es usar 3 nodos servidores de gluster, en mi caso, ahora mismo no dispongo del tercero, y lo añadiré mas tarde.

Vamos a trabajar con 3 nodos, Node1A, Node1B y Node2A, los dos primeros serán los servidores que tendrán el disco duro que queremos compartir en red, y el último sólo va a actuar como cliente.

Servidor

En los dos servidores gluster (1A y 1B) vamos a instalar glusterfs-server

# apt -y install glusterfs-server
# systemctl enable glusterd
Created symlink /etc/systemd/system/multi-user.target.wants/glusterd.service → /lib/systemd/system/glusterd.service.

A continuación, formateamos y montamos los discos que vamos a destinar a los datos que almacenaremos en gluster (1A y 1B)

# gdisk /dev/sdc # lo formateamos en formato linux 8300
# mkfs.xfs -i size=512 /dev/sdc1 -f
# vi /etc/fstab
# gluster-server
/dev/sdc1 /mnt/gluster-nodes/brick1 xfs defaults 1 2
# mkdir -p /mnt/gluster-nodes/brick1
# mount /mnt/gluster-nodes/brick1

Ahora vinculamos los servidores glusterfs entre ellos

root@node1A:~# gluster peer probe 172.31.0.2
root@node1B:~# gluster peer probe 172.31.0.1

En uno de los dos nodos, creamos el volumen y lo arrancamos

root@node1A:~# gluster volume create gvol1 replica 2 172.31.0.1:/mnt/gluster-nodes/brick1/gvol1 172.31.0.2:/mnt/gluster-nodes/brick1/gvol1

Aquí pongo 2 replicas, lo recomendable es 3. Para añadir un nuevo nodo mas adelante es:

# gluster volume add-brick gvol1 172.31.0.3:/mnt/gluster-nodes/brick1/gvol1
# gluster volume start gvol1

Atención comando no probado aún

A continuación con los comandos gluster volume list y gluster volume info podemos ver mas información del estado del volumen creado

root@node1A:~# gluster volume list
gvol1
root@node1A:~# gluster volume info
 
Volume Name: gvol1
Type: Replicate
Volume ID: ---------------------
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: 172.31.0.1:/mnt/gluster-nodes/brick1/gvol1
Brick2: 172.31.0.2:/mnt/gluster-nodes/brick1/gvol1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off

CLIENTE

Ahora en el cliente, tendremos que instalar glusterfs-client, que es un “plugin” de mount. Si estamos usando proxmox, glusterfs-client ya viene instalado y editaremos directamente fstab

root@node2A:~# vi /etc/fstab
# gluster-client
172.31.0.1:/gvol1 /mnt/gluster/gvol1 glusterfs defaults,_netdev 0 0
172.31.0.2:/gvol1 /mnt/gluster/gvol1 glusterfs defaults,_netdev,backupvolfile-server=172.31.0.1 0 0

Añadimos 2 líneas de configuración, en el caso que falle el nodo 1A, va a ir a buscar el nodo 1B.

Creamos el directorio donde almacenaremos los datos del volumen de gluster gvol1 y lo montamos

root@node2A:~# mkdir /mnt/gluster/gvol1
root@node2A:~# mount /mnt/gluster/gvol1
root@node2A:~# df -h |grep gvol1
172.31.0.1:/gvol1    224G  3.0G  221G   2% /mnt/gluster/gvol1
root@planet1B:~# mount |grep gvol1
172.31.0.1:/gvol1 on /mnt/gluster/gvol1 type fuse.glusterfs (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072,_netdev)

Ahora ya podremos montar el disco duro compartido en red en todas las maquinas, en las maquinas que tienen el servidor de glusterfs, podremos 127.0.0.1 en la ip del bind. También tenemos la opción de poner el nombre fqdn de la maquina.

Si por algún motivo no se monta el punto de montaje, tendremos que ver si el volumen está activo

root@planet1A:/var/log/glusterfs# gluster volume status
Volume gvol1 is not started

root@planet1A:/var/log/glusterfs# gluster volume start gvol1
volume start: gvol1: success
root@planet1A:/var/log/glusterfs# gluster volume status
Status of volume: gvol1
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick 172.31.0.1:/mnt/gluster-nodes/brick
1/gvol1                                     49152     0          Y       2748467
Brick 172.31.0.2:/mnt/gluster-nodes/brick
1/gvol1                                     49152     0          Y       2749675
Self-heal Daemon on localhost               N/A       N/A        Y       2748484
Self-heal Daemon on 172.31.0.2              N/A       N/A        Y       2749692
 
Task Status of Volume gvol1
------------------------------------------------------------------------------
There are no active volume tasks

Respeto a trabajar con varios volumenes sobre un mismo brick, ha empezado a hacer cosas raras y copiar el mismo contenido en todos los volumenes. No se si se trata de un error o que la forma común de trabajar es con un solo volumen.

Fuentes:
https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
https://access.redhat.com/documentation/en-US/Red_Hat_Storage/2.1/html/Administration_Guide/Expanding_Volumes.html

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.