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

La traducción del artículo ha sido preparada en la víspera del inicio del curso «Administrador de Linux. Virtualización y Clustering».

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

Se puede decir que es algo así como una configuración de red RAID 1 con discos reflejados en diferentes servidores. Sin embargo, no funciona de la misma manera que RAID (ni siquiera el de red).

Inicialmente, DRBD se utilizaba principalmente en clústeres informáticos de alta disponibilidad (HA — alta disponibilidad), sin embargo, a partir de la novena versión, puede usarse para implementar soluciones de almacenamiento en la nube.

En este artículo, explicaremos cómo instalar DRBD en CentOS y mostraremos brevemente cómo usarlo para replicar almacenamiento (particiones) en dos servidores. Este es un artículo ideal para comenzar a trabajar 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: Instalación de los paquetes DRBD

DRBD se implementa como un módulo del núcleo de Linux. Es un controlador para un dispositivo de bloque virtual, por lo que está en la parte más baja de la pila de entrada/salida del sistema.

DRBD puede instalarse desde ELRepo o EPEL. Empecemos 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, es necesario instalar el módulo del núcleo DRBD y las utilidades en ambos nodos usando:

# yum install -y kmod-drbd84 drbd84-utils

Si tienes SELinux habilitado, deberás configurar las políticas para liberar los procesos DRBD del control de SELinux.

# semanage permissive -a drbd_t

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

Ejecuta 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 ejecuta 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. Preparación del almacenamiento de bajo nivel

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

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

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

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

Paso 3. Configuración de DRBD

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

Para replicar el almacenamiento, necesitamos agregar la configuración necesaria en el archivo /etc/drbd.d/global_common.conf, que contiene secciones de configuración global y común de DRBD, y necesitamos definir los recursos en .res archivos.

Hagamos una copia de seguridad del archivo original en ambos nodos y luego abramos un nuevo archivo para editar (utilice el editor de texto de su preferencia).

# 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.

Vamos a detenernos un momento en la línea protocol C. DRBD admite tres modos diferentes de replicación (es decir, tres grados de sincronización de la replicación), a saber:

  • protocol A: protocolo de replicación asincrónica; se utiliza más comúnmente en escenarios de replicación a grandes distancias.
  • protocol B: protocolo de replicación semisíncrona o protocolo de sincronización de memoria.
  • protocol C: comúnmente utilizado para nodos en redes de cortas distancias; este es, sin duda, el protocolo de replicación más utilizado en configuraciones de DRBD.

Importante: la elección del protocolo de replicación afecta a dos factores de implementación: la protección y la latencia. La capacidad de ancho de banda, por el contrario, no depende significativamente del protocolo de replicación elegido.

Paso 4. Adición de recurso

Un recurso (Resource) es un término colectivo que se refiere a todos los aspectos de un conjunto de datos replicables específico. Definiremos nuestro recurso en el archivo /etc/drbd.d/test.res.

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

Preste atención a los nombres de los hosts, necesitamos especificar el nombre de red del host que se puede obtener mediante 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: sección on, a la que se refiere el operador de configuración anidado.
  • test: este es el nombre del nuevo recurso.
  • device /dev/drbd0: especifica un nuevo dispositivo de bloque virtual administrado por DRBD.
  • disk /dev/sdb1: esta es la partición del dispositivo de bloque que es el dispositivo de copia de seguridad para el dispositivo DRBD.
  • meta-disk: define dónde DRBD almacena sus metadatos. Internal significa que DRBD almacena sus metadatos en el mismo dispositivo físico de bajo nivel que los datos reales en producción.
  • address: especifica la dirección IP y el número de puerto del nodo correspondiente.

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

Por ejemplo, la configuración anterior puede reestructurarse en:

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. Inicialización y arranque del recurso

Para interactuar con DRBD, utilizaremos 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 para DRBD.
  • drbdsetup: herramienta de administración de bajo nivel para conectar dispositivos DRBD a sus dispositivos de copia de seguridad, configurar pares de dispositivos DRBD para reflejar sus dispositivos de copia de seguridad y verificar la configuración de los dispositivos DRBD en funcionamiento.
  • Drbdmeta: herramienta de gestión de metadatos.

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

# drbdadm create-md test

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Inicializando el almacenamiento de metadatos

A continuación, debemos iniciarlo, lo que conectará el recurso a su dispositivo de copia de seguridad, luego establecerá los parámetros de replicación y conectará el recurso a su par:

# drbdadm up test

Ahora, si ejecuta el comando lsblk, notará que el dispositivo/tomo DRBD drbd0 está vinculado al dispositivo de copia de seguridad /dev/sdb1:

# lsblk

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Lista de dispositivos de bloques

Para desactivar el recurso, ejecute:

# drbdadm down test

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

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

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Verificando el estado del recurso en los
nodos

Paso 6: Estableciendo el recurso principal/s fuente para la sincronización inicial de dispositivos

En este punto, DRBD ya está listo para funcionar. Ahora necesitamos especificar qué nodo debe usarse como fuente para la sincronización inicial de dispositivos.

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

# drbdadm primary --force test
# drbdadm status test

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Estableciendo el nodo principal como dispositivo inicial
Después de completar la sincronización, el estado de ambos discos debe ser UpToDate.

Paso 7: Probando la configuración de DRBD

Finalmente, necesitamos verificar si el dispositivo DRBD funcionará correctamente para almacenar datos replicados. Recuerde que usamos un volumen vacío, por lo que debemos crear un sistema de archivos en el dispositivo y montarlo para verificar si podemos usarlo para almacenar datos replicados.

Necesitamos crear un sistema de archivos en el dispositivo con el siguiente comando en el nodo desde el cual comenzamos la sincronización completa inicial (donde hay un recurso con rol principal):

# mkfs -t ext4 /dev/drbd0

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Creando un sistema de archivos en el volumen Drbd

Luego, montarlo como se muestra (puede dar un nombre adecuado al punto de montaje):

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

Ahora copie o cree algunos archivos en el punto de montaje indicado arriba y haga una lista larga usando el comando ls:

# cd /mnt/DRDB_PRI/
# ls -l 

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Listando el contenido del volumen principal de Drbd

A continuación, desmonte el dispositivo (asegúrese de que el montaje no esté abierto, cambie de directorio después de desmontarlo para evitar errores) y cambie el rol del nodo de primario a secundario:

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

Haga que el otro nodo (donde hay un recurso con rol secundario) sea primario, luego conéctelo al dispositivo y ejecute una lista larga de puntos de montaje. Si la configuración funciona correctamente, todos los archivos almacenados en el volumen deben estar allí:

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

Configuramos DRBD para la replicación de almacenamiento en dos servidores CentOS 7
Verificando la configuración de DRBD funcionando en el nodo secundario.

Para más información, consulte las páginas de referencia de las herramientas de administración:

# man drbdadm
# man drbdsetup
# man drbdmeta

Ayuda: Guía del usuario de DRBD.

Currículum

DRBD es extremadamente flexible y versátil, lo que lo convierte en una solución para la replicación de almacenamiento adecuada para añadir alta disponibilidad a prácticamente cualquier aplicación. En este artículo, hemos mostrado cómo instalar DRBD en CentOS 7 y hemos demostrado brevemente cómo usarlo para la replicación de almacenamiento. No dudes en compartir tus pensamientos con nosotros a través del formulario de retroalimentación a continuación.

Descubre más sobre el curso.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster