DRBD: RAID1 en red entre varios equipos

DRBD es un software que permite hacer réplica de los datos de una partición entre varias máquinas. Es decir, que si tengo una partición del mismo tamaño en dos máquinas, con DRBD puedo hacer una réplica del contenido de esta partición de forma automática, para que en el caso de que una máquina falle, tenga todo el contenido de esa partición accesible desde la otra máquina. Es como un RAID1, pero entre distintas máquinas.

Habitualmente, esta partición de la que se hace mirror, solamente está montada en una de las máquinas porque se utiliza un sistema de ficheros tradicional: ext3, raiserfs, xfs, … De esta forma, solo una de las máquinas puede acceder a los datos, la que tiene la partición montada. Sirve para montar un sistema de cluster en modo activo/pasivo, y que una de las máquinas tenga todos los datos hasta que falle, y en ese momento se puede acceder desde la otra máquina.

Pero también se puede configurar para que ambas máquinas tengan acceso a la partición en espejo, y en este caso habría que montar un sistema de ficheros para acceso en clúster, como GFS o OCFS. De esta forma podemos montar un clúster activo/activo donde ambas máquinas tienen acceso simultáneo al recurso de datos.

Instalación

Para la versión 0.7 (la que había en Debian Lenny), hay que hacer lo siguiente:

Es necesario instalar las drbd-utils:

# apt-get install drbd0.7-utils

Y el módulo de kernel:

# apt-get install drbd0.7-module-source
# apt-get install dpatch
# cd /usr/src
# tar -zxf drbd0.7.tar.gz
# cd /usr/src/modules/drbd
# module-assistant prepare
# module-assistant automatic-install drbd0.7-module-source
(Navigate the module package creation procedure as logically as
possible; details for this procedure are not provided.)
# cd /usr/src
# dpkg -i drbd0.7-module-2.4.27-2-7_0.7.10-3+2.4.27-8_i386.deb

Configuración

Configurar el propio servicio en ambas máquinas (/etc/drbd.conf), por ejemplo así:

# Definicion recurso
resource r0 {
protocol C;
disk {
on-io-error panic;
}
syncer {
rate 50M; # Note: 'M' is MegaBytes, not MegaBits
}

on maquinaA.dominio.tld {
address 192.168.20.1:7789;
device /dev/drbd0;
disk /dev/sda8;
meta-disk internal;
}
on maquinaB.dominio.tld {
address 192.168.20.2:7789;
device /dev/drbd0;
disk /dev/sda8;
meta-disk internal;
}
}

Después, arrancar el servicio en ambos nodos:

# /etc/init.d/drbd start

Ejecutar lo siguiente en el nodo que queremos que sea el primario:

# drbdsetup /dev/drbd0 primary --do-what-I-say

Y cuando termine lo anterior (solo en el primario):

# drbdadm primary r0
# mkfs.ext3 /dev/drbd0

Después, ya se puede configurar el metadispositivo en el /etc/fstab de ambas máquinas:

/dev/drbd0 /shared ext3 rw,noauto 0 2

Y después, probar a montar la unidad en el primario.

# mount /shared

5 comentarios en “DRBD: RAID1 en red entre varios equipos”

  1. Primeramente doy gracias por la existencia de este site, en estos momentos estoy intentando configurar un entorno multiservidor en linux y me han surgido algunas dudas, he aqui mi situacion: quiero montar un servidor Zimbra que tenga garantizado los temas de balanceo de carga, alta disponibilidad y sincronizacion de los datos, con lvs, heartbeat y drbd respectivamente, mi pregunta es la siguiente: si un balanceador de carga redirecciona la peticion al servidor “menos cargado” como es que esto ocurre si por detras existe solo un servidor activo (esa es la filosofia de heartbeat) que replica los datos actualizados mediante drbd al servidor secundario???

  2. Hola snoa,

    Pues sin conocer los detalles de lo que quieres montar, hay varias cosas que tienes que tener en cuenta:

    • Heartbeat no tiene porqué tener un solo servidor o servicio activo. Puedes montar sistemas activo/activo con los mismos o distintos servicios en cada nodo
    • Evidentemente, si vas a balancear carga necesitas varios servicios escuchando a los que poder hacerlo, en la misma o en distintas máquinas, y cada uno de ellos puede ser un servidor independiente o un clúster con heartbeat u otro sistema
  3. Buenas noches tengo un proyecto asignado en mi universidad y me gustaría saber como configuro un sistema de clúster con DRBD+heartbeat y que pueda montar un servicio de mysql seria de mucha ayuda su participación gracias.

  4. Quiero montar 2 servidores y sincronizarlos mediante DRBD, la consulta es si afecta en algo el hecho de que cada servidor tendrá un RAD10 con 6 discos solo para el /opt

  5. cuando quiero poner al nodo como primario (# drbdsetup /dev/drbd0 primary)Me tira este error /dev/drbd0: Failure: (127) Device minor not allocated

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *