Cómo configurar DRBD para replicar el almacenamiento en dos servidores CentOS 7


DRBD (significa Distributed Replicated Block Device ) es una solución de almacenamiento replicado, flexible, versátil y distribuida para Linux. Refleja el contenido de los dispositivos de bloque, como discos duros, particiones, volúmenes lógicos, etc. entre servidores. Implica una copia de datos en dos dispositivos de almacenamiento, de manera que si uno falla, los datos en el otro pueden ser utilizados.

Se puede considerar algo así como una configuración de red RAID 1 con los discos duplicados en todos los servidores. Sin embargo, funciona de manera muy diferente a RAID e incluso a RAID de red.

Originalmente, DRBD se usaba principalmente en clústeres de computadoras de alta disponibilidad (HA); sin embargo, a partir de la versión 9, se puede usar para implementar soluciones de almacenamiento en la nube.

En este artículo, mostraremos cómo instalar DRBD en CentOS y demostraremos brevemente cómo usarlo para replicar el almacenamiento (partición) en dos servidores. Este es el artículo perfecto para comenzar a utilizar DRBD en Linux.

Para los fines de este artículo, estamos utilizando dos clústeres de nodos para esta configuración.

  • Node1: 192.168.56.101 – tecmint.tecmint.lan
  • Node2: 192.168.10.102 – server1.tecmint.lan

Paso 1: Instalando paquetes DRBD

DRBD se implementa como un módulo del kernel de Linux. Constituye precisamente un controlador para un dispositivo de bloque virtual, por lo que se establece justo al final de la pila de E/S del sistema.

DRBD se puede instalar desde los ELRepo o EPEL . Comencemos importando la clave de firma del paquete ELRepo y habilite el repositorio como se muestra en ambos nodos.

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

Luego podemos instalar el módulo de kernel DRBD y las utilidades en ambos nodos ejecutando:

# yum install -y kmod-drbd84 drbd84-utils

Si tiene SELinux habilitado, debe modificar las políticas para eximir los procesos DRBD del control de SELinux

# semanage permissive -a drbd_t

Además, si su sistema tiene un firewall activado (firewalld), debe agregar el DRBD puerto 7789 en el firewall para permitir la sincronización de datos entre los dos nodos.

Ejecute estos comandos en el primer nodo:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

Luego ejecuta estos comandos en el segundo nodo:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
# firewall-cmd --reload

Paso 2: Preparación de almacenamiento de nivel inferior

Ahora que tenemos DRBD instalado en los dos nodos del clúster, debemos preparar un área de almacenamiento de tamaño aproximadamente idéntico en ambos nodos. Puede ser una partición del disco duro (o un disco duro físico completo), un dispositivo RAID de software, un volumen lógico LVM o cualquier otro tipo de dispositivo de bloque encontrado en su sistema.

A los efectos de este artículo, crearemos un dispositivo de bloque ficticio de tamaño 2GB utilizando el comando dd .

 
# dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Asumiremos que esta es una partición no utilizada (/dev/sdb1 ) en un segundo dispositivo de bloque (/dev/sdb ) adjunta a ambos nodos.

Paso 3: Configurando DRBD

El archivo de configuración principal de DRBD se encuentra en /etc/drbd.conf y los archivos de configuración adicionales se pueden encontrar en el directorio /etc/drbd.d .

Para replicar el almacenamiento, debemos agregar las configuraciones necesarias en el archivo /etc/drbd.d/global_common.conf que contiene las secciones globales y comunes de la configuración DRBD y podemos definir los recursos en .res archivos.

Vamos a hacer una copia de seguridad del archivo original en ambos nodos, luego abriremos un nuevo archivo para editarlo (use un editor de texto que le guste).

# mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
# vim /etc/drbd.d/global_common.conf 

Agregue las siguientes líneas en ambos archivos:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

Guarde el archivo y luego cierre el editor.

Sombree brevemente más luz en la línea protocolo C . DRBD admite tres modos de replicación distintos (por lo tanto, tres grados de sincronización de replicación) que son:

  • protocol A: Asynchronous replication protocol; it’s most often used in long distance replication scenarios.
  • protocol B: Semi-synchronous replication protocol aka Memory synchronous protocol.
  • protocol C: commonly used for nodes in short distanced networks; it’s by far, the most commonly used replication protocol in DRBD setups.

Paso 4: Agregar un recurso

Un recurso es el término colectivo que se refiere a todos los aspectos de un conjunto de datos replicado en particular. Definiremos nuestro recurso en un archivo llamado /etc/drbd.d/test.res .

Agregue el siguiente contenido al archivo, en ambos nodos (recuerde reemplazar las variables en el contenido con los valores reales para su entorno).

Tome nota de los nombres de host , necesitamos especificar el nombre de host de la red que se puede obtener ejecutando el comando uname -n

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

dónde:

  • on hostname: the on section states which host the enclosed configuration statements apply to.
  • test: is the name of the new resource.
  • device /dev/drbd0: specifies the new virtual block device managed by DRBD.
  • disk /dev/sdb1: is the block device partition which is the backing device for the DRBD device.
  • meta-disk: Defines where DRBD stores its metadata. Using Internal means that DRBD stores its meta data on the same physical lower-level device as the actual production data.
  • address: specifies the IP address and port number of the respective node.

También tenga en cuenta que si las opciones tienen valores iguales en ambos hosts, puede especificarlas directamente en la sección de recursos.

Por ejemplo, la configuración anterior se puede reestructurar para:

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

Paso 4: Inicializar y habilitar recursos

Para interactuar con DRBD , usaremos las siguientes herramientas de administración que se comunican con el módulo del núcleo para configurar y administrar los recursos de DRBD:

  • drbdadm: a high-level administration tool of the DRBD.
  • drbdsetup: a lower-level administration tool for to attach DRBD devices with their backing block devices, to set up DRBD device pairs to mirror their backing block devices, and to inspect the configuration of running DRBD devices.
  • Drbdmeta:is the meta data management tool.

Después de agregar todas las configuraciones de recursos iniciales, debemos abrir el recurso en ambos nodos.

# drbdadm create-md test

A continuación, deberíamos habilitar el recurso , que unirá el recurso con su dispositivo de respaldo, luego establece los parámetros de replicación y conecta el recurso a su par:

# drbdadm up test

Ahora, si ejecuta el comando lsblk, notará que el dispositivo/volumen DRBD drbd0 está asociado con el dispositivo de respaldo /dev/sdb1 :

# lsblk

Para deshabilitar el recurso, ejecute:

# drbdadm down test

Para verificar el estado de los recursos, ejecute el siguiente comando (tenga en cuenta que el estado del disco Inconsistente/Inconsistente se espera en este punto):

# drbdadm status test
OR
# drbdsetup status test --verbose --statistics 	#for  a more detailed status 

Paso 5: Establecer recurso principal / fuente de sincronización inicial del dispositivo

En esta etapa, DRBD ahora está listo para funcionar. Ahora debemos indicarle qué nodo debe usarse como fuente de la sincronización inicial del dispositivo.

Ejecute el siguiente comando en un solo nodo para iniciar la sincronización completa inicial:

# drbdadm primary --force test
# drbdadm status test

Una vez que se complete la sincronización, el estado de ambos discos debería ser UpToDate .

Paso 6: Probar la configuración de DRBD

Finalmente, debemos probar si el dispositivo DRBD funcionará bien para el almacenamiento de datos replicados. Recuerde, usamos un volumen de disco vacío, por lo tanto, debemos crear un sistema de archivos en el dispositivo y montarlo para probar si podemos usarlo para el almacenamiento de datos replicados.

Podemos crear un sistema de archivos en el dispositivo con el siguiente comando, en el nodo donde iniciamos la sincronización completa inicial (que tiene el recurso con función principal):

# mkfs -t ext4 /dev/drbd0 

Luego móntelo como se muestra (puede darle al punto de montaje un nombre apropiado):

# mkdir -p /mnt/DRDB_PRI/
# mount /dev/drbd0 /mnt/DRDB_PRI/

Ahora copie o cree algunos archivos en el punto de montaje anterior y haga una larga lista con el comando ls:

# cd /mnt/DRDB_PRI/
# ls -l 

A continuación, desmontar el dispositivo (asegúrese de que el montaje no esté abierto, cambie el directorio después de desmontarlo para evitar errores) y cambie la función del nodo de principal a < fuerte> secundario :

# umount /mnt/DRDB_PRI/
# cd
# drbdadm secondary test

En el otro nodo (que tiene el recurso con un rol secundario), conviértalo en primario, luego monte el dispositivo en él y realice una larga lista del punto de montaje. Si la configuración funciona bien, todos los archivos almacenados en el volumen deberían estar allí:

# drbdadm primary test
# mkdir -p /mnt/DRDB_SEC/
# mount /dev/drbd0 /mnt/DRDB_SEC/
# cd /mnt/DRDB_SEC/
# ls  -l 

Para obtener más información, consulte las páginas man de las herramientas de administración de espacio de usuario:

# man drbdadm
# man drbdsetup
# man drbdmeta

Referencia : la Guía del usuario de DRBD.

DRBD es extremadamente flexible y versátil, lo que lo convierte en una solución de replicación de almacenamiento adecuada para agregar HA a casi cualquier aplicación. En este artículo, hemos mostrado cómo instalar DRBD en CentOS 7 y hemos demostrado brevemente cómo usarlo para replicar el almacenamiento. Siéntase libre de compartir sus pensamientos con nosotros a través del formulario de comentarios a continuación.