DRBD (Distributed Replicated Block Device) nos permite montar un mirror de discos remoto (equivalente a RAID-1 en red).
DRDB crea un dispositivo de bloques drbd0 accesible desde ambos servidores. El servidor primario es el que tiene acceso RW en el dispositivo drbd0: cada vez que escribe algo en drbd0 lo escribe en la partición física y esos mismos datos se envían por TCP/IP al servidor secundario (que sólo tiene acceso RO) consiguiendo que ambas particiones físicas estén sincronizadas, exactamente igual que un RAID-1.A continuación configuraremos un dispositivo DRBD entre 2 servidores. Vamos a montar un mirror entre server1 y server2 del filesystem "/data".
1.- Para crear el mirror utilizaremos la partición "/dev/sda8" que existe en cada servidor.
Nos aseguramos que dichas particiones no estén montadas y no estén en el fichero "/etc/fstab".
Nota: las particiones tienen que ser iguales en los 2 servidores.
2.- Nos aseguramos que ambos servidores tienen la misma hora. Para conseguir esto configuramos el cliente NTP para que se actualice desde la misma ubicación.
ntpdate server
date
3.- Instalamos y cargamos el módulo DRBD en cada servidor:
apt-get install drbd8-utils
apt-get install drbd8-modules-`uname -r`
modprobe drbd
Si queremos que arranque cuando se reinicie la máquina lo añadimos al fichero modules:
echo drbd >> /etc/modules
4.- Editamos el fichero "drbd.conf" en cada servidor:
resource r0 {
protocol C;
incon-degr-cmd "halt -f";
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 10M;
group 1;
al-extents 257;
}
on server1 {
device /dev/drbd0;
disk /dev/sda8;
address 192.168.6.172:7788;
meta-disk /dev/sda8[0];
}
on server2 {
device /dev/drbd0;
disk /dev/sda8;
address 192.168.6.173:7788;
meta-disk /dev/sda8[0];
}
}
5.- Nos conectamos a cada servidor y activamos DRBD:
drbdadm up all
cat /proc/drbd
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
0: cs:Connected st:Secondary/Secondary ld:Inconsistent
ns:0 nr:0 dw:0 dr:0 al:0 bm:1548 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured
Vemos que ningún servidor ha sido configurado como primario (Secondary/Secondary) y que los datos son inconsistentes (Inconsistent), ya que todavía no hemos hecho la sincronización inicial.
6.- Nos conectamos a server1 y lo definimos como servidor primario:
drbdadm -- --do-what-I-say primary all
7.- Ahora realizaremos la sincronización inicial. Ejecutamos el siguiente comando para realizar una sincronización inicial entre server1 y server2:
drbdadm -- connect all
Durará un buen rato, por lo que tendremos paciencia. Para ver el progreso de la sincronización:
cat /proc/drbd
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
0: cs:SyncSource st:Primary/Secondary ld:Consistent
ns:13441632 nr:0 dw:0 dr:13467108 al:0 bm:2369 lo:0 pe:23 ua:226 ap:0[==========>.........] sync'ed: 53.1% (11606/24733)M
finish: 1:14:16 speed: 2,644 (2,204) K/sec
cs:Unconfigured
Cuando termine la salida será:
cat /proc/drbd
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
0: cs:Connected st:Primary/Secondary ld:Consistent
ns:37139 nr:0 dw:0 dr:49035 al:0 bm:6 lo:0 pe:0 ua:0 ap:0
1: cs:Unconfigured
Comentarios recientes
8 weeks 1 day ago
22 weeks 2 days ago
27 weeks 5 days ago
36 weeks 3 days ago
44 weeks 2 days ago
51 weeks 5 days ago
1 year 3 days ago
1 year 12 weeks ago
1 year 12 weeks ago
1 year 15 weeks ago