Configurar Distributed Replicated Block Device (DRBD)
Configurar Distributed Replicated Block Device (DRBD)

Configurar Distributed Replicated Block Device (DRBD)

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.

Leave a Reply

Your email address will not be published. Required fields are marked *