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

La traducción del artículo fue preparada en la víspera del inicio del curso "Administrador de Linux. Virtualización y Clustering " .








DRBD (Distributed Replicated Block Device) es una solución de almacenamiento distribuida, flexible y universalmente replicada 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 usar los datos del otro.



Podemos decir que esto es algo así como una configuración de red RAID 1 con discos asignados a diferentes servidores. Sin embargo, funciona de manera bastante diferente de RAID (incluso en red).



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



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



Entorno de prueba



Utilizaremos 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: Instalar paquetes DRBD



DRBD se implementa como un módulo de kernel de Linux. Es un controlador de dispositivo de bloque virtual, por lo que se encuentra 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 debe instalar el módulo del núcleo DRBD y las utilidades en ambos nodos usando:



# yum install -y kmod-drbd84 drbd84-utils


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



# semanage permissive -a drbd_t


Además, si su sistema está ejecutando un cortafuegos, debe agregar el puerto DRBD 7789 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 ejecute 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. Prepare el almacenamiento de bajo nivel



Ahora que tenemos DRBD instalado en ambos nodos del clúster, debemos preparar áreas de almacenamiento de aproximadamente el mismo tamaño. 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 que se encuentre en su sistema.



Para este tutorial, crearemos un dispositivo de bloque de prueba de 2 GB con el comando dd.



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


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



Paso 3. Configurando DRBD



El archivo de configuración principal de DRBD es /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.confque contiene las secciones de configuración DRBD global y general, y necesitamos definir recursos en los .resarchivos.



Haga una copia de seguridad del archivo original en ambos nodos y luego abra el nuevo archivo para editarlo (use su editor de texto preferido).



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



Centrémonos brevemente en 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 asincrónica; más comúnmente utilizado en escenarios de replicación a larga distancia.
  • protocolo B: protocolo de replicación semisíncrona o protocolo de memoria síncrona.
  • protocolo C: normalmente utilizado para nodos en redes de corta distancia; Es, con mucho, el protocolo de replicación más utilizado en la configuración DRBD.


Importante : La elección del protocolo de replicación afecta dos factores de implementación: seguridad y latencia. Por el contrario, el rendimiento es en gran medida independiente del protocolo de replicación elegido.



Paso 4. Agregar un recurso



Recurso es un término colectivo que se refiere a todos los aspectos de un conjunto de datos específico que se replica. Definiremos nuestro recurso en un archivo /etc/drbd.d/test.res.



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



Preste atención a los nombres de host, necesitamos proporcionar el nombre de host de la red que se puede obtener con 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 : la sección on a la que pertenece la declaración de configuración anidada.
  • prueba : 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 una partición de dispositivo de bloque que es un dispositivo de respaldo para un dispositivo DRBD.
  • meta-disco : define dónde DRBD almacena sus metadatos. Interna significa que DRBD almacena sus metadatos en el mismo dispositivo físico de bajo nivel que los datos reales en producción.
  • dirección : especifica la dirección IP y el número de puerto del host 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 refactorizarse 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. Inicializando e iniciando el recurso



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



  • drbdadm : una herramienta de administración DRBD de alto nivel.
  • drbdsetup : 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 : una herramienta de gestión de metadatos.


Después de agregar todas las configuraciones iniciales de recursos, necesitamos llamar al recurso en ambos nodos.



# drbdadm create-md test




Inicialización del almacén de metadatos



A continuación, debemos iniciarlo, que conectará el recurso a su dispositivo de respaldo, 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 DRBD / volumen drbd0 está asociado con el dispositivo de respaldo /dev/sdb1:



# lsblk




Lista de dispositivos de bloqueo



Para deshabilitar un 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 Inconsistente / Inconsistente ):



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




Comprobando el estado de un recurso para el

mal




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



En este punto, DRBD está listo para comenzar. Ahora necesitamos especificar qué nodo se debe usar 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




Configuración del nodo primario como dispositivo de inicio

Una vez completada la sincronización, el estado de ambos discos debe ser UpToDate.



Paso 7: prueba de la configuración DRBD



Finalmente, debemos verificar si el dispositivo DRBD funcionará como debería para almacenar los datos replicados. Recuerde que utilizamos un volumen de disco vacío, por lo que debemos crear un sistema de archivos en el dispositivo y montarlo para ver si podemos usarlo para almacenar datos replicados.



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



# mkfs -t ext4 /dev/drbd0




Cree 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 el comando ls :



# cd /mnt/DRDB_PRI/
# ls -l 




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 desmontar para evitar errores) y cambie la función del nodo de primario a secundario:



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


Haga que otro nodo (que tiene un recurso con un rol secundario) sea primario, luego adjunte un dispositivo y ejecute 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 




Verificando la configuración DRBD que se ejecuta en el nodo secundario.



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



# man drbdadm
# man drbdsetup
# man drbdmeta


Ayuda: Guía del usuario de DRBD .



Resumen



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






Aprende más sobre el curso.







All Articles