DRBD ® se refiere a los dispositivos de bloque concebido como una edificacion en bloque, agrupados para formar un cluster de alta disponibilidad (HA). Esto se hace por medio del reflejo completo de un dispositivo de bloque asignado a traví©s de una red. Se muestra como la red raid-1-DRBD.
En la ilustración a continuacion, las dos cajas de color naranja representan dos servidores que forman un clúster de alta disponibilidad (HA). Las cajas contienen los componentes habituales de un núcleo Linux: sistema de archivos, buffer cache, planificador de disco, controladores de disco, pila TCP/IP y el controlador de la tarjeta de interfaz de red (NIC). Las flechas en negro ilustran el flujo de datos entre estos componentes.
Las flechas color naranja muestran el flujo de datos, cuando el DRBD copia o refleja los datos de un servicio de alta disponibilidad desde el nodo activo del clúster HA hacia el nodo de respaldo del cluster HA.
En pocas palabras, DRBD es un arreglo de software el cual construye un mirror de discos sobre LAN. Esto quiere decir que ademas de nuestros arreglos de disco por hardware raid0, raid1, raid50, podemos tener nuestros datos respaldados en otro servidor remoto.
Para mas informacion detallada del DRBD visiten la pagina oficial: www.drbd.org.
Ahora que ya conocemos un poco mas del funcionamiento y las ventajas de utilizar el sistema de replicacion que ofrece DRBD, vamos a realizar la instalacion en Debian/Ubuntu:
deathbian:~# aptitude install linux-image-2.6-686 drbd8-modules-2.6-686 deathbian:~# apt-get install drbd8-utils drbd8-module-source build-essential module-assistant
Ahora reiniciamos, y a continuacion tecleamos:
deathbian:~# uname -a Linux Deathbian 2.6.24-1-686 #1 SMP Sat Apr 19 00:37:55 UTC 2008 i686 GNU/Linux
DRBD utiliza tres protocolos: A, B y C. En nuestro caso hemos editado el archivo de configuracion del DRBD para utilizar el Protocolo C. Este protocolo de comunicacion del DRBD antes de grabar los datos al disco local lo hace al disco en red, segun la teoria es el protocolo mas lento, pero nos garantiza la seguridad de los datos y al igual en la practica se ha demostrado ser muy rapido.
Veamos la configuracion del DRBD:
archivo: /etc/drbd.conf |
global { usage-count yes; } common { protocol C; } resource r0 { on nodo01 { device /dev/drbd1; disk /dev/sda7; address 192.168.1.110:7789; meta-disk /dev/sda6[0]; } on nodo02 { device /dev/drbd1; disk /dev/hda7; address 192.168.1.100:7789; meta-disk /dev/hda6[0]; } } |
La particion que deseo usar con el DRBD es el home, pero me falta espacio para la particion del metadata;
nodo01:~# df -h /dev/hda6 30G 182M 28G 1% /home
Editamos el archivo /etc/fstab, y comentamos la particion del home, para que ya no la vuelva a montar. Por cualquier cosa nunca esta de mas sacar un backup antes. Luego desmontamos la particion e ingresamos a editar particiones con fdisk. Donde borramos la particion /dev/hda6 y creamos dos nuevas particiones, una para el meta-disk de 256MB y otra para el nuevo /home con DRBD.
nodo01:~# tar -cf home.tar home/ nodo01:~# umount /dev/hda6 nodo01:~# fdisk /dev/hda Device Boot Start End Blocks Id System /dev/hda1 * 1 851 6835626 83 Linux /dev/hda2 852 4865 32242455 5 Extended /dev/hda5 852 941 722893+ 82 Linux swap / Solaris Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (942-4865, default 942): Using default value 942 Last cylinder or +size or +sizeM or +sizeK (942-4865, default 4865): +256M Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (974-4865, default 974): Using default value 974 Last cylinder or +size or +sizeM or +sizeK (974-4865, default 4865): Using default value 4865 Command (m for help): p Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xbe54be54 Device Boot Start End Blocks Id System /dev/hda1 * 1 851 6835626 83 Linux /dev/hda2 852 4865 32242455 5 Extended /dev/hda5 852 941 722893+ 82 Linux swap / Solaris /dev/hda6 942 973 257008+ 83 Linux /dev/hda7 974 4865 31262458+ 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
Ya que estan creadas las nuevas particiones, reiniciamos el sistema para que el kernel tome los cambios.
Necesitamos crear el dispositivo de metadata. Este paso debe realizarse solo en la creacion inicial del dispositivo, ya que inicializa la metadata del DRBD y borra todo el contenido en la particion.
nodo01:~# drbdadm create-md r0 --== Thank you for participating in the global usage survey ==-- The server's response is: In the future drbdadm will only contact usage.drbd.org when you update DRBD or when you use 'drbdadm create-md'. Of course it will continue to ask you for confirmation as long as 'usage-count' is at its default value of 'ask'. Just press [enter] to continue: v08 Magic number not found v07 Magic number not found Writing meta data... initialising activity log NOT initialized bitmap New drbd meta data block sucessfully created.
En el comando :~# drbdadm create-md $resource
, cambiamos $resource por r0 ya que este es el nombre del recurso en el archivo de configuracion. El mensaje de global usage survey no importa, solo es un contador para que el proyecto conozca la version de DRBD de la instalacion.
drbdadm up Levanta y conecta el servicio del DRBD con el otro nodo.
Para que el DRBD sea operacional se requieren dos ultimos pasos:
Seleccionar la fuente de sincronizacion. Si tenemos un disco vacio, no importa la fuente que seleccionemos, pero si ya tenemos informacion en el disco es crucial que dicho disco sea seleccionado como la fuente. De lo contrario, si se hace la sincronizacion desde la fuente equivocada, perderemos todos los datos.
nodo01:~# drbdadm -- --overwrite-data-of-peer primary resource
Luego de ejecutar este comando se inicia la sincronizacion completa. Pueden monitorear el progreso via /proc/drbd
. Puede tomar algún tiempo dependiendo del tamaño del dispositivo.
Ahora el dispositivo DRBD esta operacional, incluso antes de terminar la sincronizacion. Ahora pueden crear un sistema de archivos en el dispositivo, montarlo y realizar cualquier accion sobre el dispositivo de bloque.
Pruebas de rendimiento de DRBD
nodo01:~# dd if=/dev/zero bs=1M count=1 of=/dev/hda6; sync 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.0392371 s, 26.7 MB/s
Donde, /dev/hda6 es la particion de nuestro DRBD, lo cual destruye el formato. Podemos incrementar bs por 250M, 1G, etc. Para ver el rendimiento del dispositivo
Resumen
Habilitar y crear el recurso (http://www.drbd.org/users-guide/s-first-time-up.html)
Con fsdisk creamos dos particiones sda3 y sda 4 de 256M y 68Gigas respectivamente (ver ejemplo en drbd.org)
Crear Metadata
drbdadm create-md r0
mail02:~# drbdadm create-md r0
v08 Magic number not found
v07 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
Iniciar el servicio del DRBD
nodo01:~# /etc/init.d/drbd start
Asignar el nodo DRBD como primario
nodo01:~# drbdadm -- -o primary $r
Formateo de la particion replicada
nodo01:~# mkfs.ext3 /dev/drbd1
Para el nodo02, copiamos via scp
la configuracion del /etc/drbd.conf desde el nodo01
No puedo levantar el servicio de DRBD
Starting DRBD resources: [ d0 Failure: (119) No valid meta-data signature found.
==> Use 'drbdadm create-md res' to initialize meta-data area.
Aun no hemos creado el metadata, por eso los servicios DRBD no pueden iniciar.
No puedo conectar mi dispositivo a la red DRBD
drbdadm attach r0
No response from the DRBD driver! Is the module loaded?
Command 'drbdsetup /dev/drbd1 disk /dev/sda4 /dev/sda3 0 --set-defaults --create-device' terminated with exit code 20
drbdadm aborting
El error anterior se debe a que no tenemos el servicio de drbd o demonio corriendo.
Levantamos el servicio del DRBD y si todo sale bien tecleamos el comando cat para ver si esta sincronizando.
nodo01:~# service drbd start Starting DRBD resources: [ d(r0) s(r0) n(r0) ]. nodo01:~# cat /proc/drbd version: 8.0.11 (api:86/proto:86) GIT-hash: b3fe2bdfd3b9f7c2f923186883eb9e2a0d3a5b1b build by buildsvn@c5-i386-build, 2008-03-09 10:26:33 1: cs:SyncTarget st:Secondary/Primary ds:Inconsistent/UpToDate C r--- ns:0 nr:1421536 dw:1420480 dr:0 al:0 bm:86 lo:34 pe:717 ua:33 ap:0 [>....................] sync'ed: 2.1% (65184/66571)M finish: 0:21:10 speed: 52,548 (50,728) K/sec resync: used:3/31 hits:89441 misses:89 starving:0 dirty:0 changed:89 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
No puedo crear el metadata del DRBD.
[root@node02 ~]# drbdadm create-md r0
/etc/drbd.conf:20: in resource r0, on nodo01 { ... } ... on nodo02 { ... }:
There are multiple host sections for the peer.
Maybe misspelled local host name 'node02.guatewireless.org'?
/etc/drbd.conf:20: in resource r0, there is no host section for this host.
Missing 'on node02.guatewireless.org {...}' ?
[root@node02 ~]# hostname
Este problema se debe a que DRBD no puede encontrar el nombre de dominio, editamos /etc/sysconfig/network y cambiamos HOSTNAME.
Mas informacion | http://wiki.centos.org/HowTos/Ha-Drbd
En el ámbito de la informática y la cadena de bloques, el conocimiento teórico a…
El emergente dominio de las criptomonedas ha cautivado la imaginación colectiva por su potencial para…
En el siempre evolucionante mundo de las criptomonedas, el capital de riesgo (VC) ha encontrado…
?? Resumen video : Gareth Soloway Bitcoin, prepárate para lo que viene Introducción El mercado…
En marzo de 2023, el mundo financiero se vio sacudido por el repentino colapso de…
A medida que Bitcoin continúa ganando popularidad y reconocimiento, aumenta la necesidad de escalabilidad y…