Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7

La traducción del artículo se preparó la víspera del inicio del curso. Administrador de Linux. Virtualización y Clustering».

DRBD (Dispositivo de bloque replicado distribuido) es una solución de almacenamiento distribuida, flexible y universalmente replicable para Linux. Refleja el contenido de dispositivos de bloque como discos duros, particiones, volúmenes lógicos, etc. entre servidores. Crea copias de datos en dos dispositivos de almacenamiento para que, si uno de ellos falla, se puedan utilizar los datos del segundo.

Se podría decir que es algo así como configuración RAID de red 1 con discos asignados a diferentes servidores. Sin embargo, funciona de manera completamente diferente a RAID (incluso RAID de red).

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

En este artículo, explicaremos 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 con DRBD en Linux.

Entorno de prueba

Usaremos un clúster de dos nodos para esta configuración.

  • Nodo 1: 192.168.56.101 – tecmint.tecmint.lan
  • Nodo 2: 192.168.56.102 – server1.tecmint.lan

Paso 1: instale los paquetes DRBD

DRBD se implementa como un módulo del kernel de Linux. Es un controlador para un dispositivo de bloque virtual, por lo que está ubicado en la parte inferior de la pila de E/S del sistema.

DRBD se puede instalar desde ELRepo o EPEL. Comencemos importando la clave de firma del paquete ELRepo y conectando el repositorio en ambos nodos como se muestra a continuación.

# 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 necesita instalar el módulo del kernel DRBD y las utilidades en ambos nodos usando:

# yum install -y kmod-drbd84 drbd84-utils

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

# semanage permissive -a drbd_t

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

Ejecute estos comandos para 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 ejecute estos comandos para 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: preparar el almacenamiento de bajo nivel

Ahora que tenemos DRBD instalado en ambos nodos del clúster, debemos aprovisionar áreas de almacenamiento de aproximadamente el mismo tamaño en ellos. Podría ser una partición del disco duro (o un disco duro físico completo), un dispositivo RAID de software, volumen lógico LVM o cualquier otro tipo de dispositivo de bloqueo que se encuentre en su sistema.

Para este artículo, crearemos un dispositivo de bloque de prueba de 2 GB usando el comando dd.

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

Supongamos que se trata de una partición no utilizada (/dev/sdb1) en un segundo dispositivo de bloque (/dev/sdb) conectado a ambos nodos.

Paso 3. Configurar DRBD

Archivo de configuración principal DRBD: /etc/drbd.conf, y se pueden encontrar archivos de configuración adicionales en el directorio /etc/drbd.d.

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

Hagamos una copia de seguridad del archivo original en ambos nodos y luego abramos el nuevo archivo para editarlo (use un editor de texto de su elección).

# 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 a ambos archivos:

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

Guarde el archivo y luego cierre el editor.

Miremos por un momento la línea del protocolo C. DRBD admite tres modos de replicación diferentes (es decir, tres grados de sincronía de replicación), a saber:

  • protocolo A: protocolo de replicación asíncrona; Se utiliza con mayor frecuencia en escenarios de replicación a larga distancia.
  • Protocolo B: protocolo de replicación semisíncrono o protocolo de memoria síncrono.
  • protocolo C: habitualmente utilizado para nodos en redes con distancias cortas; Este es, con diferencia, el protocolo de replicación más utilizado en la configuración de DRBD.

Es importante: La elección del protocolo de replicación afecta dos factores de implementación: seguridad y latencia. Por el contrario, el rendimiento no depende significativamente del protocolo de replicación seleccionado.

Paso 4: agregue un recurso

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

Agregue lo siguiente al archivo en ambos nodos (recuerde reemplazar las variables con los valores reales de su entorno).

Preste atención a los nombres de host, debemos especificar el nombre de host de la red, que se puede obtener usando 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;
        }
}
}

donde:

  • en el nombre de host: La sección on a la que se aplica la declaración de configuración anidada.
  • test: Este es el nombre del nuevo recurso.
  • dispositivo /dev/drbd0: Indica un nuevo dispositivo de bloque virtual administrado por DRBD.
  • disco /dev/sdb1: Esta es una partición de dispositivo de bloque que es un dispositivo de respaldo para el dispositivo DRBD.
  • metadisco: Define dónde almacena DRBD sus metadatos. Interno significa que DRBD almacena sus metadatos en el mismo dispositivo físico de bajo nivel que los datos reales en producción.
  • dirección: Indica la dirección IP y el número de puerto del nodo correspondiente.

También tenga en cuenta que si los parámetros tienen los mismos valores en ambos hosts, puede especificarlos directamente en la sección de recursos.

Por ejemplo, la configuración anterior podría reestructurarse 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 5. Inicialice y ejecute el recurso

Para interactuar con DRBD usaremos las siguientes herramientas de administración (que interactúan con el módulo del kernel para configurar y administrar los recursos de DRBD):

  • drbdadm: Herramienta de administración de alto nivel DRBD.
  • configuración drbd: una herramienta de administración de nivel inferior para conectar dispositivos DRBD a sus dispositivos de respaldo, configurar pares de dispositivos DRBD para reflejar sus dispositivos de respaldo y para verificar la configuración de los dispositivos DRBD en ejecución.
  • Drbdmeta: Herramienta de gestión de metadatos.

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

# drbdadm create-md test

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Inicializando el almacén de metadatos

A continuación, debemos ejecutarlo, lo que conectará el recurso a su dispositivo de respaldo, luego configurará los parámetros de replicación y conectará el recurso a su par:

# drbdadm up test

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

# lsblk

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Lista de dispositivos de bloqueo

Para deshabilitar un recurso, ejecute:

# drbdadm down test

Para verificar el estado de un recurso, ejecute el siguiente comando (tenga en cuenta que el estado de las unidades se espera en este punto Inconsistente/Inconsistente):

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

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Comprobar el estado de un recurso en
demonio

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

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

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

# drbdadm primary --force test
# drbdadm status test

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Configurar el nodo primario como dispositivo inicial
Una vez completada la sincronización, el estado de ambas unidades debería ser UpToDate.

Paso 7: Probar la configuración de DRBD

Finalmente, debemos verificar si el dispositivo DRBD funcionará según sea necesario para almacenar los datos replicados. Recuerde que usamos un volumen de disco vacío, por lo que debemos crear un sistema de archivos en el dispositivo y montarlo para comprobar si podemos usarlo para almacenar datos replicados.

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

# mkfs -t ext4 /dev/drbd0

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Crear un sistema de archivos en el volumen Drbd

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

# 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 lista larga con ls comandos:

# cd /mnt/DRDB_PRI/
# ls -l 

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Enumere el contenido del volumen principal de Drbd.

A continuación, desmonte 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 primario a secundario:

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

Haga que el otro nodo (que tiene un recurso con una función secundaria) sea principal, luego adjunte un dispositivo y emita una larga lista de puntos 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 

Configuración de DRBD para replicación de almacenamiento en dos servidores CentOS 7
Comprobando la configuración DRBD ejecutándose en el nodo secundario.

Para obtener más información, consulte las páginas de ayuda de las herramientas administrativas:

# man drbdadm
# man drbdsetup
# man drbdmeta

Información: Manual de usuario DRBD.

Resumen

DRBD es extremadamente flexible y versátil, lo que la convierte en una solución de replicación de almacenamiento adecuada para agregar HA a casi cualquier aplicación. En este artículo, mostramos cómo instalar DRBD en CentOS 7 y demostramos brevemente cómo usarlo para la replicación de almacenamiento. No dude en compartir sus opiniones con nosotros utilizando el formulario de comentarios a continuación.

Obtenga más información sobre el curso.

Fuente: habr.com

Añadir un comentario