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
Pingback: Wordpress + apache + varnish + frontal nginx – Blackhold
Pingback: Proxmox migrar máquinas con mountpoints locales – Blackhold
Pingback: Proxmox migrar máquinas con mountpoints locales Blackhold - Blog de Informática