IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

DRBD és l'abreviació de Distributed Replicated Block Device. DRBD és un dispositiu de blocs (block device) dissenyat per a crear clusters HA (high-availability). L'Alta Disponibilitat s'aconsegueix creant un mirror entre dos dispositius de blocs utilitzant una xarxa que sol estar dedicada a aquesta tasca.

També es pot veure com un RAID 1 per xarxa (network RAID 1)

Paquets

Ubuntu/Debian

$ apt-cache search drbd
drbd8-utils - RAID 1 over tcp/ip for Linux utilities.
drbdlinks - Manages symlinks into a shared DRBD partition.

Configuració

Muntatge del disc dur

Exemple a Ubuntu

Exemple a ubuntu 12.04 i 11.04

El primer que hem fet és crear dos discs durs idèntics a les màquines virtuals de cada ordinador, es a dir, a la màquina física 1 tenim instal·lada una màquina virtual amb una Ubuntu 12.04 amb el disc dur sdb1 de 2GB i a la màquina física 2 tenim instal·lada una màquina virtual amb una Ubuntu 11.04 amb el disc dur sdb1 de 2GB. Hem donat format a cadascun dels discs, en aquest cas ho hem fet amb el sistema de fitxers ext3. Finalment hem modificat el nom de les màquines virtuals per a posteriorment poder identificar-los amb un nom mes identificatiu mitjançant la xarxa.

Instal·lem el paquet amb la següent comanda a les dos màquines virtuals:

$ sudo apt-get install drbd8-utils

Els fitxers instal·lats son els següents:

$ [[sudo]] [[dpkg -L]] drbd8-utils
/.
/etc
/etc/init.d
/etc/init.d/drbd
/etc/ha.d
/etc/ha.d/resource.d
/etc/ha.d/resource.d/drbddisk
/etc/ha.d/resource.d/drbdupper
/etc/udev
/etc/udev/rules.d
/etc/udev/rules.d/65-drbd.rules
/etc/drbd.conf
/etc/drbd.d
/etc/drbd.d/global_common.conf
/etc/xen
/etc/xen/scripts
/etc/xen/scripts/block-drbd
/etc/bash_completion.d
/etc/bash_completion.d/drbdadm
/sbin
/sbin/drbdsetup
/sbin/drbdmeta
/sbin/drbdadm
/var
/var/lib
/var/lib/drbd
/var/lock
/usr
/usr/lib
/usr/lib/drbd
/usr/lib/drbd/outdate-peer.sh
/usr/lib/drbd/snapshot-resync-target-lvm.sh
/usr/lib/drbd/notify.sh
/usr/lib/drbd/crm-fence-peer.sh
/usr/lib/ocf
/usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/linbit
/usr/lib/ocf/resource.d/linbit/drbd
/usr/sbin
/usr/sbin/drbd-overview
/usr/share
/usr/share/cluster
/usr/share/cluster/drbd.sh
/usr/share/cluster/drbd.metadata
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/drbd.8.gz
/usr/share/man/man8/drbdmeta.8.gz
/usr/share/man/man8/drbddisk.8.gz
/usr/share/man/man8/drbdsetup.8.gz
/usr/share/man/man8/drbdadm.8.gz
/usr/share/man/man5
/usr/share/man/man5/drbd.conf.5.gz
/usr/share/doc
/usr/share/doc/drbd8-utils
/usr/share/doc/drbd8-utils/copyright
/usr/share/doc/drbd8-utils/changelog.Debian.gz
/usr/lib/drbd/unsnapshot-resync-target-lvm.sh
/usr/lib/drbd/notify-split-brain.sh
/usr/lib/drbd/notify-io-error.sh
/usr/lib/drbd/notify-pri-on-incon-degr.sh
/usr/lib/drbd/notify-pri-lost.sh
/usr/lib/drbd/notify-pri-lost-after-sb.sh
/usr/lib/drbd/notify-emergency-reboot.sh
/usr/lib/drbd/notify-emergency-shutdown.sh
/usr/lib/drbd/notify-out-of-sync.sh
/usr/lib/drbd/crm-unfence-peer.sh
  • Modifiquem el fitxer /etc/hosts per tal de poder establir una correcta comunicació amb el nom de les màquines.
  • Configuració de la primera màquina virtual que tindrà el nom de drbd02 (ubuntu 12.04):
127.0.0.1	localhost
127.0.1.1	drbd02
192.168.202.202	drbd02

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
  • Configuració de la segona màquina virtual que tindrà el nom de drbd01 (ubuntu 11.04):
127.0.0.1	localhost
127.0.1.1	drbd01
192.168.202.208	drbd01

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
  • Ara modifiquem el fitxer /etc/drbd.conf per tal que els discs durs es vegin per la xarxa. Configuració del fitxer a la primera màquina virtual (ubuntu 12.04 - drbd02) i configuració del fitxer a la segona màquina virtual (ubuntu 11.04 - drbd01):
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

#include "drbd.d/global_common.conf";
#include "drbd.d/*.res";
global { usage-count no; }
common { syncer { rate 100M; } }
resource r0 {
        protocol C;
        startup {
                wfc-timeout  15;
                degr-wfc-timeout 60;
        }
        net {
                cram-hmac-alg sha1;
                shared-secret "secret";
        }
        on drbd01 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 192.168.202.208:7788;
                meta-disk internal;
        }
        on drbd02 {
                device /dev/drbd0;
                disk /dev/sdb1;
                address 192.168.202.202:7788;
                meta-disk internal;
        }
}
  • Desprès de de modificar l'anterior fitxer hem de iniciar el servei amb la següent comanda:
sudo /etc/init.d/drbd start

IMPORTANT: Cal ficar alguna dada al disc per a poder continuar. Ho podem fer amb la següent comanda:

dd if=/dev/zero of=/dev/sdb1
  • A continuació executem la següent comanda als dos hosts drbd01 - drbd02 per tal d'iniciar el metadata storage:
sudo drbdadm create-md r0
  • Executem al host drbd02, el secundari, amb la 12.04 la següent comanda i la deixem executant-se:
Every 5,0s: cat /proc/drbd                                                                                 Tue May  8 20:23:03 2012

version: 8.3.11 (api:88/proto:86-96)
srcversion: 71955441799F513ACA6DA60
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4 nr:8 dw:12 dr:1025 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
  • Ara al host drbd01, el primari, amb la Ubuntu 11.04 executem la següent comanda:
sudo drbdadm -- --overwrite-data-of-peer primary all
  • Finalment afegim el sistema de fitxers a /dev/drbd0 i el montem:
sudo mkfs.ext3 /dev/drbd0
sudo mount /dev/drbd0 /srv

Proves de sincronisme

  • Primer hem de copiar fitxers aleatoris a la partició muntada anteriorment:
sudo cp -r /etc/default /srv
  • A continuació desmuntem la partició amb la següent comanda:
sudo umount /srv
  • Es l'hora de canviar el primari pel secundari i el secundari pel primari amb les següents comandes:
sudo drbdadm secondary r0
sudo drbdadm primary r0
  • Ara ja podem muntar la partició:
sudo mount /dev/drbd0 /srv
  • Finalment mirem el fitxer /proc/drbd del drbd01 (secundari):
Servidor@drbd01:/$ cat /proc/drbd
Every 5,0s: cat /proc/drbd                                                    Tue May  8 20:36:16 2012

version: 8.3.9 (api:88/proto:86-95)
srcversion: CF228D42875CF3A43F2945A 
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----
    ns:2148020 nr:4 dw:66488 dr:2082206 al:25 bm:144 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0
  • Per últim mirem el fitxer /proc/drbd del drbd02 (primari):
Servidor@drbd01:/$ cat /proc/drbd
Every 5,0s: cat /proc/drbd                                                    Tue May  8 20:40:16 2012

version: 8.3.11 (api:88/proto:86-96)
srcversion: 71955441799F513ACA6DA60
 0: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
    ns:4 nr:8 dw:12 dr:1025 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:0

--JordiBaucells 19:33, 7 maig 2012 (UTC)

--RamonPinyol 19:35, 7 maig 2012 (UTC)

Exemples

Commutar (Switch) el node primari a secundari i viceversa

Al node primari:

$ sudo umount /srv/data
$ drbdadm secondary nfs

Al node secundari:

$ mkdir -p /srv/data
$ drbdadm primary nfs
$ mount /dev/drbd0 /srv/data

DRBD amb Heartbeat

TODO: comprovar si és necessari?

As we will be using heartbeat with drbd, we need to change ownership and permissions on several DRBD related files on both servers:

$ chgrp haclient /sbin/drbdsetup
$ chmod o-x /sbin/drbdsetup
$ chmod u+s /sbin/drbdsetup
$ chgrp haclient /sbin/drbdmeta
$ chmod o-x /sbin/drbdmeta
$ chmod u+s /sbin/drbdmeta

GUI Tools

Resolució de problemes

Wrong medium type while trying to determine filesystem size

Perquè no podem muntar ni formatar la unitat /dev/drbd0 al secunadri (mkfs.ext3: Wrong medium type while trying to determine filesystem size):

Vegeu també

Enllaços externs