Hola a tod@s
En esta oportunidad veremos como configurar Distributed Replicated Block Device (DRBD), que es una solución de almacenamiento distribuido para Linux y que nos permite replicar los dispositivos de bloque entre varios hosts. La replicación es transparente para otras aplicaciones en los host. Se puede duplicar cualquier dispositivo de bloque, discos duros, particiones, dispositivos RAID, volúmenes lógicos, etc
Los dos hosts de este ejemplo se llamarán ubuntu01 y ubuntu02. Deberán tener configurada la resolución de nombres a través de DNS o del archivo.
10.10.10.131 ubuntu01
10.10.10.132 ubuntu02

Lo siguiente, será presentar un nuevo disco en cada servidor con el mismo tamaño en ambos. Para este post usaré el almacenamiento en bloque /dev/sdb en cada nodo.

Lo siguiente será instalar DRBD en ambos servidores usando el comando:
$ sudo apt install drbd-utils
Dentro del setup usamos la opción “No configuration” que sería la opción 1.
General mail configuration type: 1

En el servidor “ubuntu01” modificamos el archivo “/etc/drbd.conf“.
$ sudo nano /etc/drbd.conf
Agregamos la siguiente configuración:
Nota: Cambiamos los datos marcados en negro, dependiendo de nuestra configuración.
global { usage-count no; } common { syncer { rate 100M; } } resource r0 { protocol C; startup { wfc-timeout 15; degr-wfc-timeout 60; } net { cram-hmac-alg sha1; shared-secret “secret”; } on ubuntu01 { device /dev/drbd0; disk /dev/sdb1; address 10.10.10.131:7788; meta-disk internal; } on ubuntu02 { device /dev/drbd0; disk /dev/sdb1; address 10.10.10.132:7788; meta-disk internal; } } |

Ahora copiamos en el segundo host (ubuntu02) el archivo /etc/drbd.conf con el comando:
Con usuario root:
$ scp /etc/drbd.conf ubuntu02:~
Con otro usuario:
$ scp /etc/drbd.conf witcher@ubuntu02:~

Con el archivo ya copiado en ubuntu02, procedemos a moverlo al directorio “/etc“.
$ sudo mv drbd.conf /etc/
Ahora, usando la utilidad, iniciamos el almacenamiento de metadatos. En ambos servidores ejecutamos: drbdadm
$ sudo drbdadm create-md r0


A continuación, en ambos hosts, iniciamos el dominio: drbd
$ sudo systemctl start drbd.service
Ahora en el host principal, en mi caso es “ubuntu01” ejecutamos el siguiente comando:
$ sudo drbdadm — –overwrite-data-of-peer primary all
Después de ejecutar el comando anterior, los datos comenzarán a sincronizarse con el host secundario. Para ver el progreso, ingresamos el siguiente comando en el host “ubuntu02” en mi caso:
$ watch -n1 cat /proc/drbd

Pulsamos Ctrl + C, para salir.
Preparación en ubuntu01
Ejecutamos el comando “lsblk” para ver información sobre todos los dispositivos de bloque disponibles o especificados en ubuntu01.
$ lsblk

En el servidor “ubuntu01” creamos el sistema de archivos usando el comando:
$ sudo mkfs.ext3 /dev/drbd0

Creamos un nuevo directorio con el comando:
$ sudo mkdir /nexus
Montamos /dev/drbd0 en la carpeta recién creada con el comando:
$ sudo mount /dev/drbd0 /nexus
Verificamos los cambios usando:
$ df -h

Realizar pruebas con DRBD
Para realizar una prueba de sincronización entre los hosts, descargaré unas ISO usando el comendo wget en el directorio /nexus. Pueden copiar los archivos que ustedes estimen convenientes o ya haber usado un disco con datos.

Verifico el contenido del directorio usando el comando:
$ ls -l

Ahora desmontaremos /nexus con el siguiente comando en el servidor principal:
$ sudo umount /nexus
Ahora degradamos el servidor principal (Ubuntu01) a la función secundaria, con el comando:
$ sudo drbdadm secondary r0

Ahora, en el servidor secundario (Ubuntu02), lo promovemos al rol de servidor principal con el comando:
$ sudo drbdadm primary r0
Creamos el directorio /nexus en el servidor secundario:
$ mkdir /nexus

Por último, montamos la partición en el servidor secundario (ubuntu02):
$ sudo mount /dev/drbd0 /nexus
Por ultimo usamos el comando ls -l para ver el contenido del directorio /nexus en el servidor secundario.
$ cd /nexus
$ ls -l

Como podrán ver, los archivos que tenemos en el servidor principal ahora son visibles en el servidor secundario.
Lo siguiente será copiar nuevos archivos en el directorio /nexus en el servidor secundario:

Ahora desmontaremos /nexus con el siguiente comando en el servidor secundario (ubuntu02):
$ sudo umount /nexus
Ahora degradamos el servidor secundario (Ubuntu02) a la función secundaria, con el comando:
$ sudo drbdadm secondary r0

Ahora, en el servidor primario (Ubuntu01), lo promovemos al rol de servidor principal con el comando:
$ sudo drbdadm primary r0
Ahora desmontaremos /nexus con el siguiente comando en el servidor principal (ubuntu01):
$ sudo mount /dev/drbd0 /nexus

Ahora podemos ver que los archivos que copiamos en el secundario son visibles en el servidor principal, con esto podemos ver que DRBD hace su trabajo perfectamente.
$ cd /nexus/
$ ls -l

Espero que esta información les haya sido útil. Si tienes dudas o alguna acotación sobre este post, déjalo en comentarios. Saludos.