DRBD kasutamine Debianiga
Sisukord
- 1 Sissejuhatus
- 2 DRBD kasutamise näite skeem
- 3 Tarkvara paigaldamine
- 4 DRDB osaliste seadistamine
- 5 DRBD osaliste initsialiseerimine
- 6 Süsteemi töö jälgimine
- 7 DRBD süsteemi kasutamine
- 8 Primaarse osalise kasutamine
- 9 iSCSI + mdadm peegli kasutamine
- 10 Märkused
- 11 Ümberlülitus sekundaarsele
- 12 Kasulikud lisamaterjalid
Sissejuhatus
DRBD (Distributed Replicated Block Device) http://www.drbd.org/ tarkvara võimaldab seadistada kahe arvuti lokaalsed plokkseadmed tööle nii, et taustal sünkroniseeritakse ühe arvuti plokkseadmele tehtud muudatusi teise arvuti plokkseadmele.
DRBD saab kasutada kahes režiimis
- single-primary - nn DRBD legacy režiim, kus DRBD süsteemi kontrolli all olevatest plokkseadmetest on samaegselt kasutatav (st praktiliselt monteeritav) vaid üks; sobib nn cold-standby lahenduse seadistamiseks, kus üks süsteem ei teeninda seni kuni teine pakub teenust
- dual-primay - režiim, kus saab kasutada mõlemat DRBD süsteemi kontrolli all olevat plokkseadet, aga eeldusel, et failisüsteem või plokkseadet kasutav rakendus oskavad arvestada asjaolu, et tegu on nö sama loogilise plokkseadmega (nt OCFS2 failisüsteem või Xen'i migration)
Lihtsal juhtumil saavutatakse rakenduskihi suurem redundantsus sellega, et lülitatakse käima mitu rakendusserverit sarnase konfiguratsiooniga ühendades nt NFS abil kõigile külge sama dokumendijuurika, aga seejuures jääb lahendamata NFS serveri enda redundantsus - isegi kui NFS serveri sees on plokkseade moodustatud nt RAID skeemile, on NFS serverina kasutusel üks füüsiline arvuti. DRBD abil on võimalik sünkroniseerida plokkseadme kihis andmeid kahe NFS serveri vahel ja seetõttu öeldakse vahel DRBD kohta network RAID1.
DRBD ei ole selles mõttes skaleeruv, et süsteem koosneb täpselt kahest osalisest.
DRBD kasutamise näite skeem
Olgu kasutada kaks arvutit, mis on lülitatud käima single-primary režiimis
teenuse kliendid | | primaarne | sekundaarne --|------------|-------------|-- | | _|_ www _|_ www | | | | |___| |___| | /srv/www | /srv/www | --> /dev/drbd0 | ..> /dev/drbd0 | --> /dev/sdb | --> /dev/sdb | | --|--------------------------|------------------- DRBD andmevahetuse subnet
- /dev/sdb - kummaski arvuti olev lokaalne plokkseade, mis on seadistatud käima DRBD nö backendina
- /dev/drbd0 - loogiline seade, millele on moodustatud failisüsteem
- /srv/www - failisüsteemi ühenduspunkt
- ..> tähistab, et failisüsteem ei ole külgeühendatud olekus
Tarkvara paigaldamine
DRBD skeemis osalevatele arvutitele tuleb paigaldada DRBD tarkvara, mis esineb kahes paketis, kusjuures tähelepanelikult kontrollida, et paigaldatakse õigele tuuma versioonile vastav moodul
# apt-get install drbd8-modules-2.6-xen-amd64 drbd8-utils
DRDB osaliste seadistamine
DRBD tööd juhib juhib seadistusfail /etc/drbd.conf, mis peab olema kõigis osalistes samasugune. DRBD töötamisel ei tööta deemonprotsess, vaid nn tuuma lõimed.
Nt võiks kasutada sellist seadistusfaili
# egrep -v "^$|^ +#|^#" drbd.conf global { usage-count yes; } common { syncer { rate 10M; } } resource r0 { protocol C; handlers { pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f"; pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f"; local-io-error "echo o > /proc/sysrq-trigger ; halt -f"; } startup { degr-wfc-timeout 120; # 2 minutes. } disk { on-io-error detach; } net { after-sb-0pri disconnect; after-sb-1pri disconnect; after-sb-2pri disconnect; rr-conflict disconnect; } syncer { rate 10M; al-extents 257; } on arendus64 { device /dev/drbd0; disk /dev/sdb; address 192.168.10.51:7788; meta-disk internal; } on arendus64-2 { device /dev/drbd0; disk /dev/sdb; address 192.168.10.52:7788; meta-disk internal; } }
kus
- usage-count yes - kasutus registreeritakse aadressil http://usage.drbd.org/cgi-bin/show_usage.pl
DRBD osaliste initsialiseerimine
Vajadusel laadida drbd tuuma moodul
# modprobe brbd
Kõigil osalistel tuleb üks kord
- initsialiseerida meta data
# drbdadm create-md r0 Writing meta data... initialising activity log NOT initialized bitmap New drbd meta data block sucessfully created.
- Ühendada lokaalne plokkseade süsteemile külge DRBD ressursina
# drbdadm attach r0
- Laadida sünkroniseerimise parameetrid
# drbdadm syncer r0
- Ühendada DRBD seade võrku
# drbdadm connect r0
Süsteemi käivitamiseks tuleb ainult primaarsel komponendil öelda
# drbdadm -- --overwrite-data-of-peer primary r0
Seejärel toimub sünkroniseerimine, primaareselt paistab see nii
# cat /proc/drbd version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r--- ns:1829280 nr:0 dw:0 dr:1829280 al:0 bm:111 lo:0 pe:0 ua:0 ap:0 [==>.................] sync'ed: 18.4% (7987/9773)M finish: 0:12:03 speed: 11,260 (10,104) K/sec resync: used:0/61 hits:114218 misses:112 starving:0 dirty:0 changed:112 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
Süsteemi töö jälgimine
Primaarses arvutis paistab DRBD olukord selline
# cat /proc/drbd version: 8.0.14 (api:86/proto:86) GIT-hash: bb447522fc9a87d0069b7e14f0234911ebdab0f7 build by phil@fat-tyre, 2008-11-12 16:40:33 0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r--- ns:4 nr:2517044 dw:2517048 dr:2025 al:1 bm:128 lo:0 pe:0 ua:0 ap:0 resync: used:0/61 hits:1048398 misses:128 starving:0 dirty:0 changed:128 act_log: used:0/257 hits:0 misses:1 starving:0 dirty:0 changed:1
kus
- cs: Connected - normaalne süsteemi olek
- st:Primary/Secondary - käsu antud arvuti roll on parasjagu primaarne
- ds:UpToDate/UpToDate - normaalne süsteemi olek
DRBD süsteemi kasutamine
DRBD süsteemis tohib otseselt kasutada DRBD ressurssi ainult primaarsel arvutil, nt moodustada failisüsteem, külge ühendada ja seda kasutada. Süsteem propageerib taustal sekundaarsesse arvutisse muudatusi, kuid need pole kasutatavad enne kui sekundaarne osaline on DRBD vahenditega viidud primaarsesse rolli.
Single-primary DRBD rollide vahetamine
Primaarne viia sekundaarseks
# drbdadm secondary r0
tulemusena on mõlemad DRBD osalised sekundaarsed
# drbdadm state r0 Secondary/Secondary
Algse sekundaarse viimine priaarsesse rolli
# drbdadm primary r0
Primaarse osalise kasutamine
Failisüsteem
Kui süsteem töötab normaalselt, st üks osaline on primaarses ja teine sekundaarses rollis, siis sobib primaarsel esmalt võtta DRBD plokkseade kasutusse, nt moodustades sellele failisüsteem
# mke2fs -j /dev/drbd0
ning kasutamiseks ühendada külge
# mount /dev/drbd0 /srv/www
LVM
# vgcreate drbd /dev/drbd0 Found duplicate PV OUZZv8VAX7hQIUDvz0oa42rvgJl6oinK: using /dev/sdb1 not /dev/drbd0 Volume group "drbd" successfully created
iSCSI + mdadm peegli kasutamine
DRBD asemel iSCSI ja mdadm vahenditest moodustatud nö üle võrgu peegli ehitamine võib tunduda küllaltki ahvatleva alternatiivina DRBD kasutamisele
teenuse kliendid /dev/sdb | iqn.2009-06.ee.tla:storage.www-a | | /dev/sdb | iqn.2009-06.ee.tla:storage.www-b | ___ ___ _|_ | | iscsi-a | | iscsi-b | | teenuse server |___| |___| |___| | | | /dev/md0, RAID1 | | | --> iqn.2009-06.ee.tla:storage.www-a | | | --> iqn.2009-06.ee.tla:storage.www-b --|--------------------------|----------------------------|-- iSCSI andmevahetuse subnet
kus
- iqn.2009-06.ee.tla:storage.www-a,b on iSCSI serverid serveerides oma lokaalset plokkseadet /dev/sdb
- /dev/md0 on teenuse serveril töötav mdadm loogiline RAID1 seade, mis on moodustatud õle iSCSI külge ühendatud ressurssidest
Selline lahendus töötab, aga pole soovitav DRBD ees järgmisetel põhjustel
- RAID1 komponendi riknemisel, nt võrgukatkestus toimub kogu peegli uuesti ehitamine, DRBD kasutab nn activity log süsteemi ja sünkroniseeritakse ainult vahepeal muutunud plokid
Märkused
- Andmebaaside andmeklustri juures kasutamisel tuleb kasutajal hästi läbi mõelda, mis toimub DRBD süsteemi riknemisel ja kuidas mõjub DRBD kasutamine jõudlusele.
- Tundub, et DRBD süsteem töötab ka juhtumil, kui üks komponent on 32 bit ja teine 64 bit operatsioonisüsteem.
Ümberlülitus sekundaarsele
Ümberlülitus sekundaarsele tähendab, et primaarselt võetakse DRBD vahenditega primaarse roll ära ning omistatakse seni sekundaarsena töötanud osalisele.
Esmalt peatatakse failisüsteemi kasutavad protsessid ja seejärel ühendatakse vastav failisüsteem lahti
# umount /srv/www
ja seejärel öeldakse seni primaarsena töötanud arvutis
# drbdadm secondary r0
ning seni sekundaarsena töötanud arvutis öeldakse
# drbdadm primary r0