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á:
- Tres servidores con Ubuntu 20.04, cada uno configurado con:
- Un usuario no root con privilegios administrativos.
- Firewall configurado con UFW.
- Nombres de host asignados a cada servidor:
Nombre de host Rol en el grupo de almacenamiento
Gluster0 Servidor
Gluster1 Servidor
Gluster2 Cliente - 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.