DRBD
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