Cómo crear un grupo de almacenamiento redundante con GlusterFS en Debian

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Al almacenar datos críticos, tener un único punto de fallo es muy arriesgado. Si bien muchas bases de datos y otros programas permiten distribuir los datos en el contexto de una única aplicación, otros sistemas pueden operar a nivel del sistema de archivos para garantizar que los datos se copien a otra ubicación cada vez que se escriban en el disco.

GlusterFS es un sistema de archivos de almacenamiento conectado a la red que permite agrupar recursos de almacenamiento de varias máquinas. Esto posibilita tratar varios dispositivos de almacenamiento distribuidos entre muchas computadoras como una sola unidad más potente. Además, GlusterFS ofrece diferentes tipos de configuraciones de almacenamiento, muchas de las cuales son similares a los niveles RAID. Por ejemplo, se pueden distribuir datos en diferentes nodos del clúster o implementar redundancia para mejorar la disponibilidad de los datos.

Objetivos

En esta guía, creará una matriz de almacenamiento en clúster redundante, también conocida como sistema de archivos distribuido o, como se menciona en la documentación de GlusterFS, un grupo de almacenamiento confiable. Esto proporcionará una funcionalidad similar a una configuración RAID reflejada en la red: cada servidor independiente contendrá su propia copia de los datos, permitiendo que las aplicaciones accedan a cualquiera de las copias y ayudando a distribuir la carga de lectura.

El clúster GlusterFS redundante constará de dos servidores Ubuntu 20.04 y un tercer servidor configurado como cliente GlusterFS.

Nota sobre la seguridad de GlusterFS

Cuando se agregan datos a un volumen de GlusterFS, estos se sincronizan con cada máquina del grupo de almacenamiento donde está alojado el volumen. Este tráfico entre nodos no está cifrado de manera predeterminada, lo que implica un riesgo potencial de intercepción.

Por ello, si va a utilizar GlusterFS en producción, se recomienda ejecutarlo en una red aislada, como una nube privada virtual (VPC) o una VPN entre los nodos.

Prerrequisitos

Para seguir este tutorial, necesitará:

  1. Tres servidores con Ubuntu 20.04, cada uno configurado con:
    • Un usuario no root con privilegios administrativos.
    • Firewall configurado con UFW.
  2. Nombres de host asignados a cada servidor:

    Nombre de host Rol en el grupo de almacenamiento
    Gluster0 Servidor
    Gluster1 Servidor
    Gluster2 Cliente
  3. Resolución DNS configurada en cada máquina.

Paso 1: Configurar la resolución DNS en cada máquina

Configurar la resolución de nombres de host facilita la gestión del grupo de almacenamiento Gluster. Puede editar el archivo /etc/hosts en cada computadora para asignar nombres de host a las direcciones IP de los servidores.

Abra el archivo /etc/hosts con privilegios de root en cada servidor:

sudo nano /etc/hosts

De forma predeterminada, el archivo contiene algo similar a lo siguiente:

127.0.1.1 hostname hostname
127.0.0.1 localhost

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Agregue las direcciones IP y nombres de host de sus servidores debajo de las líneas existentes:

127.0.0.1       localhost
first_ip_address gluster0.example.com gluster0
second_ip_address gluster1.example.com gluster1
third_ip_address gluster2.example.com gluster2

Sustituya first_ip_address, second_ip_address y third_ip_address por las direcciones IP de sus servidores. Luego, copie estas líneas en el archivo /etc/hosts de cada máquina.

Guarde y cierre el archivo presionando CTRL + X, luego Y y ENTER.

Paso 2: Configuración de fuentes de software en cada máquina

Los repositorios APT predeterminados de Ubuntu 20.04 no incluyen las versiones más recientes de GlusterFS. Para instalar la última versión estable, agregue el PPA oficial del proyecto Gluster a cada servidor:

sudo add-apt-repository ppa:gluster/glusterfs-7

Presione ENTER cuando se le solicite confirmar.

Luego, actualice el índice de paquetes local en cada servidor:

sudo apt update

Una vez completado, estará listo para instalar los paquetes GlusterFS necesarios en los servidores y el cliente.

Paso 3: Instalación de componentes del servidor y creación de un grupo de almacenamiento de confianza

Un grupo de almacenamiento es cualquier cantidad de capacidad de almacenamiento agregada a partir de más de un recurso de almacenamiento. En este paso, configuraremos dos servidores, gluster0 y gluster1, como componentes del clúster.

Instalación de GlusterFS

En ambos servidores (gluster0 y gluster1), instale el paquete del servidor GlusterFS con el siguiente comando:

sudo apt install glusterfs-server

Cuando se le solicite, presione Y y luego ENTER para confirmar la instalación.

El proceso de instalación configura automáticamente GlusterFS como un servicio systemd. Sin embargo, no inicia automáticamente el servicio ni lo habilita para que se ejecute en el arranque.

Inicio y habilitación del servicio

Para iniciar el servicio glusterd en ambos servidores, ejecute:

sudo systemctl start glusterd.service

Para habilitar el servicio para que se inicie automáticamente al arranque, ejecute:

sudo systemctl enable glusterd.service

Verifique el estado del servicio con:

sudo systemctl status glusterd.service

Configuración del firewall

Si configuró un firewall con UFW, abra el puerto 24007 (utilizado por GlusterFS) en cada nodo para permitir la comunicación entre ellos. Ejecute estos comandos:

En gluster0:

sudo ufw allow from gluster1_ip_address to any port 24007

En gluster1:

sudo ufw allow from gluster0_ip_address to any port 24007

Permita también que el cliente (gluster2) acceda al puerto 24007 en ambos servidores:

sudo ufw allow from gluster2_ip_address to any port 24007

Para bloquear el acceso desde otras máquinas, agregue esta regla general:

sudo ufw deny 24007

Establecimiento de comunicación entre nodos

En uno de los nodos (por ejemplo, gluster0), ejecute el siguiente comando para registrar gluster1 en el grupo de almacenamiento:

sudo gluster peer probe gluster1

Verifique el estado de los nodos en cualquiera de los servidores con:

sudo gluster peer status

Paso 4: Creación de un volumen de almacenamiento

Para crear un volumen redundante, configure un volumen con funcionalidad de réplica. Ejecute este comando desde gluster0 o gluster1:

sudo gluster volume create volume1 replica 2 gluster0.example.com:/gluster-storage gluster1.example.com:/gluster-storage force

Inicie el volumen para que esté disponible:

sudo gluster volume start volume1

Verifique que el volumen esté en línea con:

sudo gluster volume status

Configuración del firewall para el cliente

Abra el puerto 49152 (usado por el volumen) para permitir que el cliente acceda al volumen:

sudo ufw allow from gluster2_ip_address to any port 49152

Bloquee el acceso desde otras máquinas al puerto del volumen:

sudo ufw deny 49152

Paso 5: Instalación y configuración de componentes del cliente

En el cliente (gluster2), instale el paquete glusterfs-client:

sudo apt install glusterfs-client

Cree un punto de montaje en el cliente:

sudo mkdir /storage-pool

Monte el volumen remoto:

sudo mount -t glusterfs gluster0.example.com:/volume1 /storage-pool

Verifique el espacio disponible:

df

Paso 6: Prueba de las funciones de redundancia

Cree archivos de prueba en el cliente:

cd /storage-pool
sudo touch file_{0..9}.test

Verifique que los archivos estén replicados en los nodos del clúster:

En gluster0:

ls /gluster-storage

En caso de fallas en un nodo, la operación de lectura en el cliente sincronizará los archivos:

ls /storage-pool

Paso 7: Restricción de acceso

Restrinja el acceso al volumen configurando la opción auth.allow. En uno de los nodos, ejecute:

sudo gluster volume set volume1 auth.allow gluster2_ip_address

Para permitir el acceso desde varias máquinas, especifique las direcciones IP separadas por comas:

sudo gluster volume set volume1 auth.allow gluster_client1_ip,gluster_client2_ip

Paso 8: Obtención de información del grupo de almacenamiento

Use los siguientes comandos para administrar y supervisar su grupo de almacenamiento:

  • Información sobre los volúmenes:
sudo gluster volume info
  • Estado de los nodos conectados:
sudo gluster peer status
  • Perfil de rendimiento del volumen:
sudo gluster volume profile volume1 start
sudo gluster volume profile volume1 info
  • Estado de los componentes asociados a GlusterFS:
sudo gluster volume status

Para ingresar a la consola interactiva de GlusterFS:

sudo gluster

Conclusión

Con este tutorial, ha configurado un sistema de almacenamiento redundante que puede escribir en dos servidores simultáneamente, asegurando la disponibilidad de datos incluso en caso de fallos en uno de los nodos.