DRBD: Porovnání verzí

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání
(Založena nová stránka: Pro online replikaci dat používáme DRBD. Rozchození je jednoduché - nejdřív vytvořte v /etc/drbd.conf popis vašich DRBD zařízení (DRBD target-ů) a pak spusťt...)
 
 
(Není zobrazeno 20 mezilehlých verzí od stejného uživatele.)
Řádek 1: Řádek 1:
Pro online replikaci dat používáme DRBD.
Pro online replikaci dat používáme DRBD.


=Vytvoření externího úložiště pro metadata=
Při tvorbě DRBD zařízení budete nejčastěji chtít vytvořit jej nad LV, ve kterém už jsou nějaká data.
DRBD ale potřebuje o každém svém zařízení udržovat metadata - např. bitovou mapu změn kvůli rychlejší synchronizaci.
Metadata může uložit buď interně - přímo do LV, které chcete replikovat, nebo externě (do jiného LV).
Interně se metadata ukládají na konec LV, tzn. pokud v něm máte nějaká data, musíte LV nejdříve zvětšit o patřičnou velikost.
Externí úložiště je samozřejmě pohodlnější, a pokud bude i na jiném fyzickém disku, bude i rychlejší.
Vytvoříte jej např. takto:
lvcreate -L 256M -n drbd-meta-disk vg_main
Velikost 256MB stačí pro kapacitu 256MB * 32768 = 8 TB, viz návod [http://www.drbd.org/users-guide/ch-internals.html#s-meta-data-size Estimating meta data size], ale každý DRBD resource musí mít min. 128MB metadat - viz [http://lists.linbit.com/pipermail/drbd-user/2010-July/014376.html tento report].
Proto jako velikost metadat dejte 128MB * počet DRBD zařízení.
=drbd.conf=
Příklad:
resource vyuka-system {
  protocol C;
  startup {
    wfc-timeout        0;  ## Infinite!
    degr-wfc-timeout  120;  ## 2 minutes.
    become-primary-on  xeric;
  }
  disk {
    on-io-error detach;
  }
  net {
  #  allow-two-primaries;
  }
  syncer {
  }
  on xeric {
    device      /dev/drbd0;
    disk        /dev/vg_main/vyuka-system;
    address    x.y.z.w:7789;
    meta-disk  /dev/vg_main/drbd-meta-disk[0];
  }
  on other-server {
    device      /dev/drbd0;
    disk        /dev/vg_main/vyuka-root;
    address    x.y.z.v:7889;
    meta-disk  /dev/vlam-server/drbd-meta-disk[0];
  }
}
Pozn.:
*od DRBD 8.3.2 (Debian Squeeze, Ubuntu 10.04..) lze prý místo drbd[0..9]+ psát drbd_{custom device name}. Zkoušel jsem to, ale nefunguje.
*od DRBD 8.4 (Debian Sid?) bude možné tvořit multi volume DRBD resource, tzn. všechny LV půjde synchronizovat přes jediné připojení.
=Spuštění synchronizace=
Rozchození je jednoduché - nejdřív vytvořte v /etc/drbd.conf popis vašich DRBD zařízení (DRBD target-ů) a pak spusťte tyto 3 příkazy:
Rozchození je jednoduché - nejdřív vytvořte v /etc/drbd.conf popis vašich DRBD zařízení (DRBD target-ů) a pak spusťte tyto 3 příkazy:


Vytvoření DRBD zařízení:
Vytvoření DRBD zařízení:
  drbdadm create-md {DRBD_target_z_konfiguraku}
  root@xeric:#drbdadm create-md {DRBD_target_z_konfiguraku}
Připojení storage k DRBD zařízení:
a to samé na druhém serveru:
root@other-server:#drbdadm create-md {DRBD_target_z_konfiguraku}
 
 
 
 
Podobně na obou serverech spustit:
Připojení storage k DRBD zařízení
  drbdadm attach {DRBD_target_z_konfiguraku}
  drbdadm attach {DRBD_target_z_konfiguraku}
Připojení DRBD zařízení k protějšku na síti:
Připojení DRBD zařízení k protějšku na síti:
  drbdadm connect {DRBD_target_z_konfiguraku}
  drbdadm connect {DRBD_target_z_konfiguraku}
Nebo předchozí 2 příkazy najednou:
drbdadm up {DRBD_target_z_konfiguraku}
Na prvním uzlu je potřeba nastavit příznak primary
drbdsetup /dev/drbd2 primary --do-what-I-say
Resp. v Debian Lenny
drbdsetup /dev/drbd2 primary -o
=Změna v konfiguraci=
==Změna protějšího uzlu nebo jeho IP adresy==
Na primary uzlu spusťte:
odpojení od (staré) protistrany:
drbdadm disconnect nejaky_resource
Reload configurace drbd za provozu:
drbdadm adjust nejaky_resource
Připojení protistrany:
drbdadm connect nejaky_resource
==Změna underlying device==
Pokud na jednom uzlu změníte underlying blokové zařízení, ale ponecháte původní (externí) metadata, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na secondary uzlu provedete
drbdadm invalidate nejaky_resource
nebo můžete vytvořit na změněném uzlu metadata znovu:
drbdadm create-md nejaky resource
=Změna obsahu underlying device bez vědomí DRBD=
Pokud změníte obsah underlying blokového zařízení bez vědomí DRBD,
pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na změněném uzlu, který máte samozřejmě secondary, provedete
drbdadm invalidate nejaky_resource


=Problém "Secondary/Secondary" po rebootu nebo restartu drbd=
=Problém "Secondary/Secondary" po rebootu nebo restartu drbd=
Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat.
Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat.
Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek:
Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek:
=Resize DRBD resource=
Resize drbd resource' resize může být spuštěno poté, co jsou LV na obou nodech resizovaná:
lvresize -L +2G /dev/vg00/example-disk
Zmena velikosti musi byt provadena na primarni node(druhy node musi byt v rezimu secondary)
  drbdadm resize resource

Aktuální verze z 6. 10. 2011, 06:48

Pro online replikaci dat používáme DRBD.

Vytvoření externího úložiště pro metadata

Při tvorbě DRBD zařízení budete nejčastěji chtít vytvořit jej nad LV, ve kterém už jsou nějaká data. DRBD ale potřebuje o každém svém zařízení udržovat metadata - např. bitovou mapu změn kvůli rychlejší synchronizaci. Metadata může uložit buď interně - přímo do LV, které chcete replikovat, nebo externě (do jiného LV). Interně se metadata ukládají na konec LV, tzn. pokud v něm máte nějaká data, musíte LV nejdříve zvětšit o patřičnou velikost. Externí úložiště je samozřejmě pohodlnější, a pokud bude i na jiném fyzickém disku, bude i rychlejší.

Vytvoříte jej např. takto:

lvcreate -L 256M -n drbd-meta-disk vg_main

Velikost 256MB stačí pro kapacitu 256MB * 32768 = 8 TB, viz návod Estimating meta data size, ale každý DRBD resource musí mít min. 128MB metadat - viz tento report.

Proto jako velikost metadat dejte 128MB * počet DRBD zařízení.

drbd.conf

Příklad:


resource vyuka-system {
 protocol C;
 startup {
   wfc-timeout         0;  ## Infinite!
   degr-wfc-timeout  120;  ## 2 minutes.
   become-primary-on   xeric;
 }
 disk {
   on-io-error detach;
 }
 net {
 #  allow-two-primaries;
 }
 syncer {
 }
 on xeric {
   device      /dev/drbd0;
   disk        /dev/vg_main/vyuka-system;
   address     x.y.z.w:7789;
   meta-disk  /dev/vg_main/drbd-meta-disk[0];
 }
 on other-server {
   device      /dev/drbd0;
   disk        /dev/vg_main/vyuka-root;
   address     x.y.z.v:7889;
   meta-disk  /dev/vlam-server/drbd-meta-disk[0];
 }
}

Pozn.:

  • od DRBD 8.3.2 (Debian Squeeze, Ubuntu 10.04..) lze prý místo drbd[0..9]+ psát drbd_{custom device name}. Zkoušel jsem to, ale nefunguje.
  • od DRBD 8.4 (Debian Sid?) bude možné tvořit multi volume DRBD resource, tzn. všechny LV půjde synchronizovat přes jediné připojení.

Spuštění synchronizace

Rozchození je jednoduché - nejdřív vytvořte v /etc/drbd.conf popis vašich DRBD zařízení (DRBD target-ů) a pak spusťte tyto 3 příkazy:

Vytvoření DRBD zařízení:

root@xeric:#drbdadm create-md {DRBD_target_z_konfiguraku}

a to samé na druhém serveru:

root@other-server:#drbdadm create-md {DRBD_target_z_konfiguraku}



Podobně na obou serverech spustit: Připojení storage k DRBD zařízení

drbdadm attach {DRBD_target_z_konfiguraku}

Připojení DRBD zařízení k protějšku na síti:

drbdadm connect {DRBD_target_z_konfiguraku}

Nebo předchozí 2 příkazy najednou:

drbdadm up {DRBD_target_z_konfiguraku}

Na prvním uzlu je potřeba nastavit příznak primary

drbdsetup /dev/drbd2 primary --do-what-I-say

Resp. v Debian Lenny

drbdsetup /dev/drbd2 primary -o

Změna v konfiguraci

Změna protějšího uzlu nebo jeho IP adresy

Na primary uzlu spusťte: odpojení od (staré) protistrany:

drbdadm disconnect nejaky_resource

Reload configurace drbd za provozu:

drbdadm adjust nejaky_resource

Připojení protistrany:

drbdadm connect nejaky_resource

Změna underlying device

Pokud na jednom uzlu změníte underlying blokové zařízení, ale ponecháte původní (externí) metadata, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na secondary uzlu provedete

drbdadm invalidate nejaky_resource

nebo můžete vytvořit na změněném uzlu metadata znovu:

drbdadm create-md nejaky resource

Změna obsahu underlying device bez vědomí DRBD

Pokud změníte obsah underlying blokového zařízení bez vědomí DRBD, pak DRBD neudělá resync automaticky - musíte ho udělat ručně tak, že na změněném uzlu, který máte samozřejmě secondary, provedete

drbdadm invalidate nejaky_resource

Problém "Secondary/Secondary" po rebootu nebo restartu drbd

Defaultní konfigurace počítá s tím, že o nastavení "Primary" strany se postará HeartBeat. Pokud HeartBeat nemáte, pak vyberte jedno ze zařízení, které po rebootu zkusí být primární, a na oba stroje přidejte do konfiguráku následující řádek:

Resize DRBD resource

Resize drbd resource' resize může být spuštěno poté, co jsou LV na obou nodech resizovaná:

lvresize -L +2G /dev/vg00/example-disk

Zmena velikosti musi byt provadena na primarni node(druhy node musi byt v rezimu secondary)

 drbdadm resize resource