Erinevus lehekülje "DRBD kasutamine Debianiga" redaktsioonide vahel

Allikas: Kuutõrvaja
(Xen)
(Xen)
303. rida: 303. rida:
 
====Xen====
 
====Xen====
  
Xen ja DRBD koos kasutamine võimaldab kahest lokaalse plokkseadmega füüsilisest arvutist moodustada salvestusressursi mõttes kõrgendatud redundantsusega süsteemi, seejuures saab kasutada Xen live migration protseduuri. Selline süsteem erineb nö klassikalisest juhtumist kui Xen live migration eeldab, et osalevatesse dom0 arvutitesse on ühendatud külge mingist kolmandast kohast, nt FC või iSCSI salvestusressurss. DRBD juhtumil kasutatakse kahte sõltumatut salvestusressurssi ja süsteem on kaitstud nt ühe arvuti täieliku füüsilise riknemise eest, kusjuures kui FC või iSCSI iseenesest ei ole kõrgendatud redundantsusega, siis on FC või iSCSI teenus põhimõtteliselt ikkagi SPOF (Single Point of Failure).
+
Xen ja DRBD koos kasutamine võimaldab kahest lokaalse plokkseadmega füüsilisest arvutist moodustada salvestusressursi mõttes kõrgendatud redundantsusega süsteemi, seejuures saab kasutada Xen live migration protseduuri. Selline süsteem erineb nö klassikalisest juhtumist kus Xen live migration eeldab, et osalevatesse dom0 arvutitesse on ühendatud külge mingist kolmandast kohast, nt FC või iSCSI salvestusressurss. DRBD juhtumil kasutatakse kahte sõltumatut salvestusressurssi ja süsteem on kaitstud nt ühe arvuti täieliku füüsilise riknemise eest, kusjuures kui FC või iSCSI iseenesest ei ole kõrgendatud redundantsusega, siis on FC või iSCSI teenus põhimõtteliselt ikkagi SPOF (Single Point of Failure).
  
 
Süsteemi ettevalmistamiseks tuleb sooritada sellised sammud
 
Süsteemi ettevalmistamiseks tuleb sooritada sellised sammud

Redaktsioon: 18. juuli 2009, kell 23:27

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 -1                _|_  www-2
    |   |                      |   |    
    |___|                      |___|    
      |     /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.

Nt võiks kasutada sellist seadistusfaili

 # egrep -v "^$|^ +#|^#" drbd.conf
 global {
   usage-count no;
 }
 
 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;
 
     cram-hmac-alg "sha256";
     shared-secret "saladus123";
   }
 
   syncer {
     rate 10M;
     al-extents 257;
   }
 
   on www-1 {
     device     /dev/drbd0;
     disk       /dev/sdb;
     address    192.168.10.51:7788;
     meta-disk  internal;
   }
 
   on www-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
  • cram-hmac-alg, shared-secret - osaliste autentimine
  • ilus oleks kui /etc/hosts failidest osalise nimed laheneksid
  • handlers - nö tõsiste vigade puhul pannakse DRBD osalise arvuti operatsioonisüsteem seisma

DRBD osaliste initsialiseerimine

Vajadusel laadida drbd tuuma moodul

 # modprobe drbd

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 esmakordseks 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

DRBD töötamisel ei tööta deemonprotsess, vaid nn tuuma lõimed

 # ps aux | grep drbd
 root      2453  0.0  0.0      0     0 ?        S    Jun28   0:08 [drbd0_worker]
 root      2461  0.0  0.0      0     0 ?        S    Jun28   0:15 [drbd0_receiver]
 root      5128  0.0  0.0      0     0 ?        S    18:59   0:00 [drbd0_asender]

Tulemusena on tekkinud töötav st käivitatud olekus DRBD süsteem.

Single-primary DRBD süsteemi kasutamine

Single-primary 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.

Kusjuures sekundaarsel komponendil ei saa töötada, nt disk ütleb

 # fdisk /dev/drbd0 
 Unable to open /dev/drbd0

Süsteemi käivitamine

Kui DRBD süsteem on initsiliseeritud, siis sobib nt r0 ressursi käivitamiseks öelda mõlemas komponendis

 # drbdadm up r0

kusjuures 'up' sisaldab endas järgnevust

 # drbdadm attach r0
 # drbdadm syncer r0
 # drbdadm connect r0

DRBD süsteemi seiskamiseks sobib öelda

 # drbdadm down r0

kusjuures 'down' sisaldab endas järgnevust

 # drbdadm secondary r0
 # drbdadm disconnect r0
 # drbdadm detatch r0

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 komponendi olekut saab küsida selliselt, r0 ressursi jaoks

 # drbdadm state r0
 Primary/Secondary

mis tähendab, et käesolev aruti on primaarne ja teine sekundaarne. Teisel arvutil samamoodi küsides saab vastupidise vastuse.

DRBD rollide vahetamine

Single-primary DRBD süsteemis toimub komponentide vahel rollide vahetamine selliselt, esmalt lõpetada DRBD seadme kasutamine, st ühendada failisüsteem primaarses lahti ning viia LVM voluumid nn NOT available olekusse, nt

 #  vgchange -a n

seejärel viia primaarne sekundaarseks

 # drbdadm secondary r0

tulemusena on mõlemad DRBD osalised sekundaarsed

 # drbdadm state r0
 Secondary/Secondary

Algse sekundaarse viimine priaarsesse rolli

 # drbdadm primary r0

Kui toimub LVM kasutamine, siis uue primaarses öelda

 # vgchange -a y

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

Kuna DRBD seadmele /dev/drbd0 vastab sisuliselt mõne füüsiline plokkseade, siis suure tõenäosusega ilma LVM seadistusfailis /etc/lvm/lvm.conf filtri osa kohendamata saab PV initsialiseerimisel sarnase teate

 # pvcreate /dev/drbd0 
   Found duplicate PV OUZZv8VAX7hQIUDvz0oa42rvgJl6oinK: using /dev/sdb1 not /dev/drbd0
   Volume group "drbd" successfully created

Aitab nt sellise filtri kasutamine, kui DRBD seadmele vastav plokkseade on /dev/sdb1

 filter = [ "r|/dev/sdb1|", "r|/dev/disk|", "a/.*/" ]

Peale filtri muutmist maksab öelda, mis moodustab värske LVM cache'i

 # vgscan

Dual-primary DRBD süsteemi kasutamine

Debiani paketihalduse DRBD versioon 8.0.x ei ole dual-primary funktsioonide osas nii arenenud kui 2009 aasta suvel drbd.org viimane stabiilne versioon, aga kasutada tundub, et saab. Dual-primary sobib kasutada nt sellistel juhtumitel

  • Xen live-migration
  • nn klustri-failisüsteem, nt OCFS2

Seadistamine

Selleks tuleb lisada seadistusfaili net sektsiooni juurde rida

 net {
   ...
   allow-two-primaries;
 }

ning seejärel mõlemas arvutis öelda

 # drbdadm adjust r0

ning promoteerida mõlemad arvutid primaarsesse olekusse

 # drbdadm primary r0

Edust annab tunnistust olek

 # drbdadm state r0
 Primary/Primary

ning fakt, et mõlemas osalises saab samaaegselt pöörduda DRBD seadme poole fdisk'iga.

Xen

Xen ja DRBD koos kasutamine võimaldab kahest lokaalse plokkseadmega füüsilisest arvutist moodustada salvestusressursi mõttes kõrgendatud redundantsusega süsteemi, seejuures saab kasutada Xen live migration protseduuri. Selline süsteem erineb nö klassikalisest juhtumist kus Xen live migration eeldab, et osalevatesse dom0 arvutitesse on ühendatud külge mingist kolmandast kohast, nt FC või iSCSI salvestusressurss. DRBD juhtumil kasutatakse kahte sõltumatut salvestusressurssi ja süsteem on kaitstud nt ühe arvuti täieliku füüsilise riknemise eest, kusjuures kui FC või iSCSI iseenesest ei ole kõrgendatud redundantsusega, siis on FC või iSCSI teenus põhimõtteliselt ikkagi SPOF (Single Point of Failure).

Süsteemi ettevalmistamiseks tuleb sooritada sellised sammud

  • kummalgi arvutil on plokkseadmed, mis moodustavad DRBD seadme, nt /dev/drbd0 DRBD ressursinimega r0
  • DRBD on seadistatud Primary/Primary režiimi
  • ühes arvutis on sellele seadmele ettevalmistatud domU

Nö tavalise domU seadistusfailist erineb kõneksolevale asjakorraldusele vastav seadistusfail selle võrra, et plokkseadme kirjeldamiselt kasutatakse nt phy asemel drbd seadet, selliselt

name    = 'drbd.loomaaed.tartu.ee'
kernel  = '/boot/vmlinuz-2.6.26-2-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'
root    = '/dev/xvda1 ro'
memory  = '1024'
disk    = [ 'drbd:r0,xvda1,w']
vif  = [ 'mac=70:01:68:00:20:13' ]
vcpus="2"
extra='xencons=tty'

Süsteemi kasutamiseks tuleb tavapäraselt öelda seal arvutis kus domU parasjagu töötab

 xm migrate --live drbd.loomaaed.tartu.ee teine-dom0

Oluline on tähele panna, et Xen hoolitseb ise DRBD ressursi primaarseks ja sekundaarseks lülituste eest paketis drbd8-utils sisalduva skripti /etc/xen/scripts/block-drbd abil. domU käivitamisel võib olla DRBD Secondary/Secondary olekus.

Kuigi sellisele lahendusele kulub suhteliselt väha riistvara, siis ette võiks heita, et salvestusressursi kiht ei ole nö infrastruktuurselt eraldatud.

OCFS2

TODO

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õenäoliselt isegi töötab, aga seda pole soovitav eelistada DRBD'le 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.

Kasulikud lisamaterjalid