Fuentes:
- Instalar GlusterFS
- Instalar GlusterFS - Permitir clientes concretos
- Terminología y tipos de volúmenes
- Configurar SSL
- Configurar clientes
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