DRBD se define a sí mismo con un sistema de RAID1 sobre IP. Los espejos se crean sobre discos de máquinas remotas y el bus SCSI o SATA se convierte en conexiónes IP.
Se dispone de dos máquinas, con un dispositivo de bloques (habitualmente un disco duro) que se desea replicar de forma continua entre ambos. Uno de ellos será el original (Master) y el otro la réplica (Espejo). En este caso se va a replicar la partición "/dev/sda3", que debe tener el mismo tamaño en ambos nodos.
Se parte de dos máquinas Debian 6 con conexión directa IP y configuración:
Master (drbd1)
hostname: nodo01.prueba.com
Dirección IP: 192.168.1.21
Replica/espejo (drbd2)
hostname: nodo02.prueba.com
Dirección IP: 192.168.1.22
Ambos nodos deben ser accesibles desde el otro por estas direcciones IP (un ping es una buena prueba rápida). El ancho de banda de la linea que los une definirá el rendimiento de la replicación.
Archivo "/etc/hosts"
Debe existir en ambos nodos e incluir una linea por cada nodo con su dirección IP de contacto:
[...]
192.168.1.21 nodo01.prueba.com node01
192.168.1.22 nodo02.prueba.com node02
[...]
Instalar paquete "drbd8-utils" en ambos nodos:
#> apt-get install drbd8-utils
Cargar el módulo "drbd" del kernel en ambos nodos:
#> modprobe drbd
La partición de disco a replicar debe:
- Existir como tal antes de iniciar el servicio (vg.- /dev/sda3) en ambos nodos.
- No estar formateada con ningún sistema de archivos en ninguno de los nodos. Por lo tanto, ningún fichero del sistema debe residir en ella.
- Ser idéntica en ambos nodos en tamaño.
Editar el archivo de configuración "/etc/drbd.conf"
# You can find an example in /usr/share/doc/drbd.../drbd.conf.example
#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";
global {
usage-count no;
}
common {
#Velocidad de sincronización. Velocidad de la red dedicada.
syncer {rate 100M; }
}
resource r1 {
#Protocolo de sincronización:
# A: La sincronización se da por terminada cuando es enviada al buffer TCP local
# B: La sincronización se da por terminada cuando ha llegado al buffer remoto
# C: La sincronización se da por termianda cuando ha sido escrita también en el disco espejo
protocol C;
startup {
wfc-timeout 15; #Tiempo seg. de espera por lo recursos remotos en el arranque del servicio
degr-wfc-timeout 60; #Tiempo seg. de espera por un recurso perdido hasta que el cluster se marca como degradado
}
net {
cram-hmac-alg sha1; #Algoritmo CRAM para la clave
shared-secret "secret"; #Clave de autentificación
#allow-two-primaries; #Solo si hay cluster filesystem encima
}
on nodo01 {
device /dev/drbd0; #Dispositivo RAID DRBD
disk /dev/sda3; #Dispositivo local miembro de DRBD
address 192.168.1.21:7788; #Interfaz de comunicación
meta-disk internal; #Integrado en "/dev/sda3"
}
on nodo02 {
device /dev/drbd0;
disk /dev/sda3;
address 192.168.1.22:7788;
meta-disk internal;
}
} #Fin resource r1
Iniciar el servicio "drbd" en ambos nodos:
#> /etc/init.d/drbd start
Inicializar el recurso DRBD (genera los metadatos). Se debe ejecutar el siguiente comando en ambos nodos:
#> drbdadm create-md r1"Levantar" el recurso en ambos nodos, ejecutando:
#> drbdadm up r1Desde este momento podemos ver el estado del "raid" en el archivo "/proc/drbd":
#> watch cat /proc/drbdAhora se debe establecer cual de los nodos es el master y cual el que debe ser espejo. En este caso, nodo01 será master y nodo02 será espejo. Para ello, ejecutar en el master:
#> drbdsetup /dev/drbd0 primary -oEsto sincronizará el nodo espejo (nodo02) con el master (nodo01). Se puede ver el estado de la sincronización en "/proc/drbd".
Ahora se puede crear un filesystem en el raid. Para ello, en cualquiera de los nodos, ejecutar:
#> mkfs.ext3 /dev/drbd0El nuevo sistema de archivos en raid DRBD solo puede (debe) ser montado en un nodo a la vez. De lo contrario, y salvo que el sistema de archivos sea un cluster-filesystem, se corrompería. Por defecto, el filesystem solamente puede ser montado en el nodos principales (primary).
#> mount /dev/drbd1 /mnt/mountpoint
Administración básica
DRBD permite varios nodos principales (opción "allow-two-primaries" en /etc/drbd.conf), pero salvo que el filesystem que se cree encima de DRBD sea un sistema de archivos en cluster (vg.- OCFS2, GFS, etc...). Por lo tanto, y si hemos utilizado ext3 como en este caso, para montar el raid en el nodo espejo, previamente debemos hacer que sea primario (pasando el Master a secundario).
Montar el raid DRBD en el nodo espejo (nodo02):
nodo01> umount /mnt/mountpoint
nodo01> drbdsetup /dev/drbd0 secondary
nodo02> drbdsetup /dev/drbd0 primary
nodo02> mount /mnt/mountpoint
OJO!!. Ahora el nodo Maestro es "nodo02".