silvesterlangen.de

Seite
Menü

DRBD

Die Abkürzung steht für Distrituted Replicated Block Device und stellt uns Blockdevices zur Verfügung, die über das IP-Netzwerk ein Mirroring der Daten ermöglicht. Dabei wird ein weiterer Layer zwischen Festplatte/Partition (oder sogar ein LVM-Volume ist möglich) und dem Dateisystem geschoben. Auf diese Weise replizieren wir unsere Daten der Nodes auf den jeweils anderen, um so für den Fall eines Failovers alle Daten vorliegen zu haben, die der "Reserveserver" braucht, um den Dienst aufzunehmen.

 

Nach dem wir ein funktionierendes Heartbeat haben und die Umschaltung problemlos läuft, installieren wir auf beiden Servern DRBD mit folgender Zeile:

apt-get install -y drbd8-utils

Nach der Installation wechseln wir das Verzeichnis nach /etc/ und editieren folgende Datei: drbd.conf

Wir löschen darin den Inhalt und fügen folgenden Inhalt hinzu:

### globale Angaben ###
global {
    # an Statistikauswertung auf usage.drbd.org teilnehmen?
    usage-count no;
}
### Optionen, die an alle Ressourcen vererbt werden ###
common {
  syncer {
    rate 100M;
  }
}
### Ressourcenspezifische Optionen
resource home-data {
  # Protokoll-Version
  protocol C;

  startup {
    # Timeout (in Sekunden) für Verbindungsherstellung beim Start
    wfc-timeout         0;
    # Timeout (in Sekunden) für Verbindungsherstellung beim Start
    # nach vorheriger Feststellung von Dateninkonsistenz
    # ("degraded mode")
    degr-wfc-timeout  120;
  }
  disk {
    # Aktion bei EA-Fehlern: Laufwerk aushängen
    on-io-error detach;
  }
  net {
    ### Verschiedene Netzwerkoptionen, die normalerweise nicht gebraucht werden, ###
    ### die HA-Verbindung sollte generell möglichst performant sein...           ###
    # timeout           60;
    # connect-int       10;
    # ping-int          10;
    # max-buffers     2048;
    # max-epoch-size  2048;
  }
  syncer {
    # Geschwindigkeit der HA-Verbindung
    rate 100M;
  }
  on node1 {
    ### Optionen für Master-Server ###
    # Name des bereitgestellten Blockdevices
    device     /dev/drbd0;
    # dem DRBD zugrunde liegendes Laufwerk
    disk       /dev/sdb;
    # Adresse und Port, über welche die Synchr. läuft
    address    192.168.2.44:7788;
    # Speicherort der Metadaten, hier im Laufwerk selbst
    meta-disk  internal;
  }
  on node2 {
    ## Optionen für Slave-Server
    # Name des bereitgestellten Blockdevices
    device     /dev/drbd0;
    # dem DRBD zugrunde liegendes Laufwerk
    disk       /dev/sdb;
    # Adresse und Port, über welche die Synchr. läuft
    address    192.168.2.45:7788;
    # Speicherort der Metadaten, hier im Laufwerk selbst
    meta-disk  internal;
  }
}

In den unteren beiden Blöcken müssen die IPs der Nodes noch angepasst werden. Ebenso ggf die Angabe der Festplatte (sdb oder hdc...)

Nun sind wir an einem Punkt wo wir den Node runterfahren und eine weitere Festplatte hinzufügen. Falls sie schon drin sein sollte, dann mit lsblk schauen, ob sie auch da ist. Diese Disk wird nicht partitioniert!

Jetzt müssen wir noch eine Resource erstellen und dann noch festlegen, dass Node1 die primäre "Disk" hat dessen Daten auf die anderen Disk (remote) repliziert werden. Beim Erstellen der Resource muss natürlich der Resourcennamen verwendet werden, den wir in der drbd.conf angegeben haben.

drbdadm create-md home-data

Ab jetzt lässt sich DRBD neu starten. Das macht man mit:

/etc/init.d/drbd restart

Danach noch festlegen welcher Node die aktive Disk hat:

drbdsetup /dev/drbd0 primary --overwrite-data-of-peer

Nun schauen wir uns an, ob die Replikation läuft:

cat /proc/drbd

Oder besser noch ein "watch" davor setzen. Dann kann man den Prozess beobachten.

watch cat /proc/drbd

Während der Replikation kann man aber die Disk formatieren. Das macht nichts aus. Alle Änderungen werden dann sofort auf die "remote"-Disk (also die Disk auf Node2) übertragen.

 

Verbindungsprobleme?

Mit einem cat /proc/drbd bekommt man die Info "WFConnection" was für "waiting for connection" steht und bedeutet, dass die Nodes aus irgend einem Grund sich nicht verbinden wollen. Da habe ich zugegebenermaßen auch jedes mal Trouble mit. Ich löse das wie folgt:

Auf der Secondary-Seite:

drbdadm secondary all
drbdadm disconnect all
drbdadm -- --discard-my-data connect all

Auf der Primary-Seite:

drbdadm primary all
drbdadm disconnect all
drbdadm connect all

Nachtrag:

Für die Replikation kann man eine ganze Festplatte oder auch nur eine Partition verwenden. Hier habe ich die ganze Platte gewählt, aber es funktioniert genau so gut mit einer Partition. Da ist kein Unterschied. Es lässt sich aber auch noch mit LVM arbeiten, wenn man das möchte. Das ist etwas komplizierter, aber das kann man hier mal nachlesen und ausprobieren.

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login