DRBD

Z Wiki UnArt Slavičín
Skočit na navigaciSkočit na vyhledávání

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

(ve starší verzi drbdadm místo --do-what-I-say je -o)

Změna v konfiguraci

Po jakékoli změně v konfiguraci (např. změně IP adresy některého uzlu) je potřeba udělat: odpojení (staré) protistrany:

drbdadm disconnect nejaky_resource

Reload configurace drbd:

drbdadm adjust nejaky_resource

Připojení protistrany:

drbdadm connect 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