GlusterFS

Fuentes:

Ejemplo:

El propósito es realizar la instalación y configuración de un sistema formado por 4 servidores de almacenamiento únicos (funcionando en Ubuntu) como servidor de almacenamiento (almacenamiento distribuido) con GlusterFS y un cliente (Ubuntu) capaz de acceder al almacenamiento como si fuese un sistema de archivos local, sin entrar en detalles de la securización que deberían llevar, para confirmar que todo funciona correctamente.

El sistema de volúmenes en glusterFS puede ser:

- Distribuido: cada archivo se encuentra en un solo brick.
- Replicado: cada archivo se replica en los bricks.
- A rayas: cada archvio se divide en partes entre los bricks.
- Distribuido replicado: es nuestro ejemplo, en el que cada archivo se copia en un brick y se replica en otro, de forma que si un nodo se cae el otro sigue prestando el servicio, y una vez recuperado se sincronizan.

Por ejemplo, glusterfs01 tiene su replica en glusterfs02, y glusterfs04 es replica de glusterfs03.
Si desde el cliente creamos un archivo en el cluster, este se creará bien en glusterfs01, replicándose en glusterfs02, o bien en glusterfs03 replicándose en glusterfs04.

Hardware:
Máquinas virtuales (VirtualBox): 5 idénticas (glusterfscliente 192.168.1.60, glusterfs01 192.168.1.61, glusterfs02 192.168.1.62, glusterfs03 192.168.1.63 y glusterfs04 192.168.1.64)
Linux glusterfs01 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Linux glusterfs02 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Linux glusterfs03 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Linux glusterfs04 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Linux glusterfscliente 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

2 x Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz
512 MB RAM
1 HD 16 GB

Software:
- SO: Ubuntu 14.04.2 LTS
- GlusterFS 3.4.2

Particiones:

- 100 MB /boot ext4 primaria
- 8 GB / ext4 primaria
- 1 GB /tmp ext4 primaria
- 1 GB swap lógica
- 1 GB /home lógica
- 5 GB no montar

Pasos:

1.- Preparación

En los 5:

sudo vi /etc/hosts

192.168.1.60   glusterfscliente
192.168.1.61   glusterfs01
192.168.1.62   glusterfs02
192.168.1.63   glusterfs03
192.168.1.64   glusterfs04

2.- Instalación

En los 4 que forman el almacenamiento distribuido (gluster01, gluster02, gluster03, gluster04):

# Instalar python-software-properties
sudo apt-get install python-software-properties

# Añadir la llave GPG
su -
wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/Debian/wheezy/pubkey.gpg | apt-key add -

# Añadir la fuente y actualizar el repositorio
echo deb http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/Debian/apt wheezy main > /etc/apt/sources.list.d/gluster.list
apt-get update

# Instalar el paquete glusterfs-server
exit
sudo apt-get install glusterfs-server

# Instalar el paquete xfsprogs para poder formatear la partición (el hd o lo que corresponda) en xfs, donde se va a montar el  brick
sudo apt-get install xfsprogs

# Crear una nueva partición en /dev/sda (en mi caso, adaptarlo al que corresponda)
sudo fdisk /dev/sda
m
n
enter
enter
w

sudo reboot
mkfs.xfs -i size=512 /dev/sda7

# Crear el punto de montaje y montar la partición como un Gluster "Brick"
sudo mkdir -p /export/glusterfs && sudo mount /dev/sda7 /export/glusterfs && sudo mkdir -p /export/glusterfs/brick

# Obtenemos el UUID del punto a montar
ls -l /dev/disk/by-uuid

# Colocar el punto de montaje
su -
echo "UUID=3af100ae-75a8-4a3a-baa9-245c49f86941    /export/glusterfs xfs defaults 0 0"  >> /etc/fstab
exit

En el cliente:

# Instalamos glusterfs-client
sudo apt-get install glusterfs-client

# Creamos una carpeta donde montar el volumen del servidor
mkdir ~/glusterfs

3.- Agregar los servidores al repositorio de confianza desde el servidor glusterfs01

sudo gluster peer probe glusterfs02
sudo gluster peer probe glusterfs03
sudo gluster peer probe glusterfs04

4.- Crear el volume en gluster

Cabe destacar que el orden en el que se pongan los bricks determinará como van a ser replicados los nodos. Desde glusterfs01 ejecutamos el siguente comando:

sudo gluster volume create gv01 replica 2 transport tcp glusterfs01:/export/glusterfs/brick glusterfs02:/export/glusterfs/brick glusterfs03:/export/glusterfs/brick glusterfs04:/export/glusterfs/brick

De forma predeterminada, todos los clientes pueden conectarse al volumen. Si se quiere conceder acceso a un/os cliente/s em concreto, ejecutar:

sudo gluster volume set gv01 auth.allow 192.168.1.60

Es posible utilizar comodines para las direcciones IP (como 192.168.*) y especificar varias direcciones IP separadas por comas (por ejemplo 192.168.1.658,192.168.1.59).

5.- Arrancar el volumen

sudo gluster volume start gv01

En cualquier servidor ejecutar este comando para obetener informacion del volumen:

gluster volume info

En el cliente:

sudo echo "glusterfs01:/gv01 /home/user/glusterfs glusterfs defaults 0 0" >> /etc/fstab
sudo mount -a

# Comprobamos que esta montado:
 df -h

Linux

Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution-ShareAlike 3.0 License