¿Qué es DRBD?
DRBD (dispositivo de bloque replicado distribuido) es un paquete de software para sistemas basados en Linux. Se utiliza para replicar los dispositivos de almacenamiento de un nodo a otro nodo a través de una red.
Puede proporcionar asistencia para hacer frente a la recuperación ante desastres y las conmutaciones por error. DRBD puede entenderse como una alta disponibilidad para el hardware y puede verse como un reemplazo del almacenamiento compartido en red.
¿Cómo funciona DRBD?
Supongamos que queremos agrupar una partición de almacenamiento en dos sistemas CentOS, necesitamos un dispositivo de bloque (como /dev/sdb1) en ambos sistemas. Esos sistemas se definen como nodo primario y nodo secundario (pueden cambiar los nodos primario y secundario).
DRBD usa un dispositivo de bloque virtual (como drbd0) para compartir los dispositivos de bloque /dev/sdb1 de ambos sistemas. El nodo principal es aquel en el que se monta la unidad virtual drbd0 para fines de lectura/escritura.
Primero necesitamos instalar los paquetes DRBD que se usan para crear un disco virtual drbd0. Podemos formatearlo como un sistema de archivos xfs o ext3 para usar el dispositivo /dev/drbd0. El dispositivo drbd0 está configurado para usar dispositivos de bloque /dev/sdb1 en ambos sistemas. Ahora solo trabajamos en el dispositivo drbd0.
Dado que drbd0 solo se puede montar en el nodo principal, solo se accede al contenido desde el nodo principal a la vez. De todos modos, si el sistema principal falla, podemos perder los archivos del sistema, pero el dispositivo virtual drbd0 estará disponible. Podemos cambiar el nodo inicialmente secundario como principal y podemos acceder a su contenido nuevamente.
Usando DRBD en CentOS
Este tutorial se realizó en CentOS 7, pero también debería funcionar para otras versiones de CentOS. Lea esto para saber cómo comprobar la versión de CentOS.
Requisitos
- Dos sistemas CentOS instalados
- Un dispositivo de bloqueo gratuito como /dev/sdb1 en ambos sistemas (preferiblemente del mismo tamaño)
- Selinux Permisivo o deshabilitado
- puerto 7788 permitido en cortafuegos
- Los nodos deben estar dentro de la misma red.
Instalación
Aquí seguimos la instalación agregando el repositorio epel ya que los paquetes drbd no están disponibles en las distribuciones de CentOS.
$ rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
También agregue la clave GPG en ambos nodos. La clave GPG es la clave pública utilizada para cifrar la comunicación entre nodos.
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
Ahora podemos usar yum para instalar paquetes drbd. Debemos identificar las versiones de drbd compatibles con nuestro kernel. Compruebe las versiones de drbd disponibles para su kernel:
$ yum info *drbd* | grep Name
La salida es como:
Ahora instale la versión requerida de drbd junto con los módulos del kernel necesarios.
$ yum -y install drbd84-utils kmod-drbd84
Verifique si el módulo del kernel está cargado o no.
$ lsmod | grep -i drbd
Si la respuesta del comando anterior da una salida vacía, entonces los módulos del kernel no se cargan. Debe reiniciar el sistema e intentar:
$ modprobe drbd
modprobe es un comando que agrega o elimina de manera inteligente módulos del kernel de Linux. Para que los módulos se carguen durante cada arranque, systemd-modules-load se utiliza el servicio. Entonces, cree un archivo llamado drbd.conf dentro de /etc/modulesload.d.
$ echo drbd > /etc/modules-load.d/drbd.conf
Configuración de DRBD
Los archivos de configuración de DRBD se encuentran en /etc/drbd.d/
De forma predeterminada, /etc/drbd.d/global_common.conf está disponible globalmente y contiene las configuraciones globales o principales. Otros archivos de configuración se denominan archivos de recursos con extensión *.res.
Ahora creamos los archivos de configuración de recursos en ambos nodos para usar drbd para nuestros dispositivos de bloque especificados.
Vamos a crear el archivo de recursos llamado linuxhandbook.res
$ vi /etc/drbd.d/linuxhandbook.res
copie y pegue el contenido a continuación en el archivo de recursos
resource linuxhandbook {
protocol C;
on node1 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.20.222.14:7788;
meta-disk internal;
}
on node2 {
device /dev/drbd0;
disk /dev/sdb1;
address 10.20.222.15:7788;
meta-disk internal;
}
}
Aquí,
- linuxhandbook es el nombre del recurso. Los nombres de los recursos siempre deben ser únicos.
- el protocolo C se utiliza para la comunicación síncrona. Es un protocolo de replicación totalmente síncrono. Otros protocolos disponibles son el protocolo A y el protocolo B.
- protocolo A :Protocolo de replicación asíncrona. Generalmente preferido para nodos en redes de larga distancia.
- protocolo B :Protocolo de replicación semisíncrona. También llamado protocolo sincrónico de memoria.
- protocolo C :preferido para nodos en redes de corta distancia.
- node 1 y node2 son el nombre de host de nodos individuales. Usar solo para identificar los bloques.
- device /dev/drbd0 es el dispositivo lógico creado para usar como dispositivo.
- disk /dev/sdb1 es el dispositivo de bloque físico que ocupará drbd0.
- la dirección 10.20.222.14:7788 y la dirección 10.20.222.15:7788 son las direcciones IP de dos nodos respectivos con el puerto TCP 7788 abierto.
- Meta-disco interno se usa para definir el uso de metadatos internos del disco.
La configuración debe ser la misma en ambos nodos.
Ahora, necesitamos inicializar el almacenamiento de metadatos en cada nodo:
$ drbdadm create-md linuxhandbook
Si esto da un mensaje de error, entonces debe crear un archivo de datos ficticio manualmente, y luego probar el comando anterior.
$ dd if=/dev/zero of=/dev/sdb1 bs=1024k count=1024
El comando dd se usa para crear un archivo aleatorio de memoria especificada. El comando create-md debe tener éxito luego.
Una vez que el dispositivo lógico se haya vuelto utilizable, conecte el dispositivo drbd0 al disco sdb1 en ambos nodos. Ver la salida de lsblk
$ lsblk
la salida debería ser así
De lo contrario, conecte el dispositivo drbd0 al disco sdb1 a través del archivo de recursos.
$ drbdadm attach linuxhandbook
or
$ drbdadm up linuxhandbook
Once again try,
$ lsblk
Inicie y habilite el servicio drbd en ambos nodos.
$ systemctl start drbd
$ systemctl enable drbd
Si el inicio de drbd puede ser rápido para un nodo y tomar algo de tiempo para otro nodo.
Configuración de nodos primarios y secundarios
DRDB usa solo un nodo a la vez como nodo principal donde se puede realizar lectura y escritura.
Primero especificaremos el nodo 1 como nodo principal.
$ drbdadm primary linuxhandbook --force
Compruebe el estado del proceso drbd:
$ cat /proc/drbd
or
$ drbd-overview
La salida parece:
Aquí, la información que podemos obtener es:
- actualmente qué nodo es principal y cuál es secundario.
- el proceso de sincronización de datos.
- estado del dispositivo drbd como:inconsistente, actualizado, sin disco.
Otro nodo, el nodo2, se establece automáticamente como nodo secundario. Consulte el estado del proceso de descripción general de drbd.
El paso principal que aún no hemos realizado es formatear el dispositivo drbd0. Esto solo se puede hacer en uno de los nodos.
Aquí, formateamos drbd0 como ext3 con el comando mkfs. El sistema de archivos xfs también funciona. Es mejor que usemos el mismo tipo de disco que en /dev/sdb1.
$ mkfs -t ext3 /dev/drbd0
Ahora, de nuevo en el nodo principal (por ejemplo, es el nodo 1 en este tutorial), debemos montar el dispositivo drbd0 para poder trabajar en él.
$ mount /dev/drbd0 /mnt
you can select your required mount point instead of /mnt. for example, I can mount the /dev/drbd0 device to /var/lib/mysql to use it for mysql database drbd.
NOTA :Recuerda siempre el proceso. Primero, debe hacer que el nodo sea principal para DRBD. Y luego monte el dispositivo drbd0 en su sistema y podrá realizar acciones en el dispositivo. Sin hacer que el nodo sea principal, no puede montar el dispositivo drb0, no puede usar el contenido de ese dispositivo.
Probando el proceso DRBD
Después de que drbd se haya configurado en ambos nodos y un nodo se convierta en primario. Montamos el dispositivo en la ubicación /mnt. Ahora cree un archivo para probar la sincronización de los nodos drbd.
$ touch /mnt/drbdtest.txt
$ ll /mnt/
Después de esto, estableceremos el nodo 1 como secundario y el nodo 2 como primario. El proceso es similarmente reflejado. En el nodo 1 (en el nodo principal de la instancia), desmonte el dispositivo /dev/drbd0 y conviértalo en secundario. En el nodo 2 (en el nodo secundario de la instancia), conviértalo en el nodo principal y móntelo en la ubicación requerida.
en el nodo 1:
$ umount /mnt
$ drbdadm secondary linuxhandbook
en el nodo 2:
$ drbdadm primary linuxhandbook
$ mount /dev/drbd0 /mnt
Después de un montaje exitoso en el nodo 2, verifique los archivos en la carpeta /mnt. Debe ver el archivo drbdtest.txt (creado en el nodo 1).
$ ll /mnt/
Si desea tener una interfaz GUI para administrar y visualizar los nodos del clúster drbd, puede usar LCMC (Linux Cluster Management Console).
¡Eso es todo! Ha implementado con éxito DRBD en su sistema. Si queda alguna consulta, puede comentar a continuación en la sección de comentarios.
Autor :Rishi Raj Gautam es un amante de Linux y un activista del código abierto.