DRBD

From Frotmail Projects
Jump to navigation Jump to search

Werking

Om het gebruik van XEN wat zinniger te maken hebben we op 2 servers software geinstalleerd genaamd: DRBD.

DRBD is een soort van softwarematige RAID1 maar dan over een netwerk. Op 2 machines koppel je een partitie aan een DRBD device, deze 2 partities zullen daarna continu gesynchroniseerd blijven via het netwerk.

In een DRBD setup heb je dus 2 machines, 1 daarvan is de Primary en de andere is de Secondary server. De Primary server kan het DRBD device gebruiken (read/write mounten enz) terwijl de Secondary server alleen de wijzigingen verwerkt. Wanneer de Primary server down gaat (of wanneer je deze handmatig degradeerd tot secondary server) kan de Secondary server worden gepromoveerd tot Primary server.

Dankzij bovenstaand scenario is de data op het DRBD device dus altijd beschikbaar. Het is mogelijk om het degraderen/promoveren voor een groot deel te automatiseren zodat een DomU op Server1 binnen enkele minuten van Server1 naar Server2 verhuisd, de data staat dan namelijk al op Server2.

Compilen

Normaal gesproken is dit een kwestie van downloaden, uitpakken en make install te typen. Helaas ging het onder Xen 3.1 minder voorspoedig en kreeg ik verschillende errors.

Uiteindelijk is het gelukt om de DRBD module te compilen op de volgende manier:

Eerst de config kopieren naar de source map van de Xen Kernel

cp /boot/config-2.6.18-xen /lib/modules/2.6.18-xen/source/.config

Dan de kernel opnieuw bouwen zodat alle header files enzo aanwezig zijn

cd /lib/modules/2.6.18-xen/source/
make

Dit duurt een tijdje maar daarna is de kernel klaar (hier doen we niets mee btw, maar anders kan DRBD geen module maken voor onze kernel.

Daarna gaan we DRBD bouwen

cd /root/drbd-0.7.24/
make clean
make all KDIR=/lib/modules/2.6.18-xen/source

Als alles goed gaat hebben we nu een module

even installeren:

make install

In mijn geval werd hij verkeerd geplaatst, in /lib/modules/2.6.18 ipv /lib/modules/2.6.18-xen/

mkdir /lib/modules/2.6.18-xen/block
cp /lib/modules/2.6.18/block/drbd.ko /lib/modules/2.6.18-xen/block/

En tenslotte laden

modprobe drbd

Gaf het resultaat (dmesg):

drbd: initialised. Version: 0.7.24 (api:79/proto:74)
drbd: SVN Revision: 2875 build by root@evb.tgphosting.nl, 2007-09-14 21:00:46
drbd: registered as block device major 147

Configureren

Voorbeeld config, actief op EVB en EVC. Dit is de /etc/drbd.conf welke op beide machines hetzelfde is

resource r0 {
  protocol C;

  startup {
    degr-wfc-timeout 120;    # 2 minutes.
  }

  disk {
    on-io-error   detach;
  }

  syncer {
    rate 10M;
    al-extents 257;
  }

  on evc {
    device     /dev/drbd0;
    disk       /dev/md1;
    address    192.168.0.3:7788;
    meta-disk  internal;
  }

  on evb {
    device    /dev/drbd0;
    disk      /dev/hdb1;
    address   192.168.0.4:7788;
    meta-disk internal;
  }
}

Setup

drbdadm attach r0
drbdsetup /dev/drbd0 primary --do-what-I-say