HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql

Vorrausetzung

  • 2 Server mit einer Lenny Grundinstallation ( Hier als Servernamen cnode1 und cnode2 )
  • Optional: 2 Netzwerkkarten je Server (für drbd)
  • eine leere Partion je Server
  • Vorausgesetzt es ist nicht anderst angegeben, alles auf beiden Nodes ausführen !

Konfiguration von drbd

Auf beiden Servern als root anmelden

aptitude install drbd8-utils drbd8-modules-2.6.24-1-686
echo "drbd" >> /etc/modules

Nun sichern wir die alte drbd-Konfigurationsdatei

mv /etc/drbd.conf /etc/drbd.conf.old

Jetzt erstellen wir eine neue Datei mit vim /etc/drbd.conf

global { usage-count yes; }
common { syncer { rate 10M; } }
resource ha {
protocol C;
startup { wfc-timeout 0; degr-wfc-timeout 120; }
disk { on-io-error detach; }
net {
cram-hmac-alg sha1;
allow-two-primaries; # Wichtig für Primary/Primary Setup
}
on cnode1 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.1:7788;
meta-disk internal;
}
on cnode2 {
device /dev/drbd0;
disk /dev/sdb1;
address 192.168.1.2:7788;
meta-disk internal;
}
}

Speichern mit :wq

Wenn 2 Netzwerkkarten vorhanden sind, drbd lieber auf eine eigene Karte konfigurieren. Damit drbd mit der Partion etwas anfangen kann, müssen wir diese initialisieren.

drbdadm create-md ha

Nun können wir die beiden Partionen synchronisieren. (Den folgenden Befehl nur auf einer Node starten !)

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

Je nach dem wie groß die Partionen sind kann es nun etwas Zeit vergehen. Der Fortschritt kann überprüft werden mit

/etc/init.d/drbd status

In der Ausgabe sollte sich die unten stehende Zeile finden lassen, wenn beide drbd-Devices synchron sind.

0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---

Nun können wir die zweite Node auch zum ”Primary” machen

drbdsetup primary r0

Update (Danke keks)

Da es sehr störend ist, wenn wir die Server neustarten, immer per Hand die 2 Nodes als Primary zu definieren, fügen wir noch zusätzlich in den startup-Block

become-primary-on both;

ein. Die Zeile sollte dann wie folgt aussehen:

startup { wfc-timeout 0; degr-wfc-timeout: 120; become-primary-on both; }

Das bewirkt, dass beide während des Bootvorgangs als Master definiert werden. Nun die Konfiguration auf beiden Nodes aktualisieren, dann

drbdadm adjust ha

und

drbdadm primary ha

(Befehle auf beiden Nodes ausführen!)

Wichtig: Um diese Funktion zunutzen, müsst ihr DRBD aus den Quellen bauen, da die Funktion (laut drbd-Homepage) erst ab 8.2.0 implementiert ist.

Konfiguration von ocfs2

Jetzt installieren das ocfs2 Filesystem

aptitude install ocfs2-tools ocfs2console

Noch die Konfigurationsdatei erstellen

#/etc/ocfs2/cluster.conf

node:
ip_port = 7777
ip_address = 192.168.1.1
number = 0
name = cnode1
cluster = ocfs2

node:
ip_port = 7777
ip_address = 192.168.1.2
number = 1
name = cnode2
cluster = ocfs2

cluster:
node_count = 2
name = ocfs2

Nun sind wir fast fertig. Jetzt einmal

/etc/init.d/ocfs2 restart

und dann können wir das Filesystem erstellen mit

mkfs.ocfs2 /dev/drbd0

Damit wir mit dem Filesystem arbeiten können, müssen wir es initialisieren.

/etc/init.d/o2cb online ocfs2

bewirkt das der Cluster mit dem Namen ocfs2 geladen wird.

/etc/init.d/o2cd load
/etc/init.d/o2cd online ocfs2

Jetzt können wir es mit

mount /dev/drbd0 /srv

nutzen

Konfiguration vom HTTP Loadbalancer – pound

Hier 🙂

Konfiguration von heartbeat

Folgt !

14 thoughts on “HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql”

  1. Hey,

    Danke für das gute Tutorial!

    Ich habe eine Frage dazu:

    Bei drbd muss man den zweiten Peer immer erst extra als Primary definieren. Das ist für einen Server eine Blöde Lösung, der soll beim Einschalten gleich laufen. In der /etc/init.d/drbd steht im case start:
    $DRBDADM sh-b-pri all # Became primary if configured
    Hast du eine Idee, wo man das einstellt? Oder ob man überhaupt eine Pri/Pri Konfiguration braucht?

    genug gespammt, du bist dran 🙂

  2. Servus!

    2 Fehler (bisher 🙂 – ich arbeite momentan nur am drbd):

    in drbd.conf muss es heissen:
    startup { wfc-timeout 0; degr-wfc-timeout 120; }

    ohne den Doppelpunkt hinter degr-wfc-timeout

    desweiteren wird der 2. Node zum primary nicht mittels

    drbdsetup primary r0

    sondern

    drbdadm primary ha

    das Kommando sowie die Ressource sind falsch.

    Gruss
    stifler

    [Edit]
    drbdadm primary ha – Nein, meine Ressource heißt nur einfach r0 !
    [/Edit]

  3. Warum hast denn du das durchgestrichen, dass man dafür drbd 8.2 braucht? Das steht hier in der Mitte…

    Gruß,
    keks

  4. hammer!
    bin eh grad auf der suche danach, wie ich ich 2 riesen fileserver (5millionen+ Bilder) in echtzeit syncen kann.
    Ich denke das geht mit DRBD ganz gut!

    *bookmark add*

    Sascha

  5. Hallo,

    ich möchte OCFS2 direkt beim Boot in der /etc/fstab eintragen, so dass das FS automatisch gemounted wird. Allerdings kennt Debian die Option _netdev zwar, das dazu gehörige /etc/init.d/netfs Skript fehlt aber, so dass das OCFS2 nicht beim Boot gemounted wird.

    Ein mount -a hilft, aber das kann nicht die Lösung sein.

    Bin für jede Hilfe dankbar.

    Gruß,
    Matthias.

  6. Hi,
    Bei mir funktionierts bis zum Schritt /etc/init.d/drbd status

    Es wird mir das Filesystem nicht gemounted.
    m:res cs st ds p mounted fstype
    0:ha Connected Primary/Primary UpToDate/UpToDate C

    Hat einer einen Tip ?

    danke

    lg
    Patrick

  7. Hallo,

    gibt es einen Lösungsansatz bezüglich des automatischen mountents des Devices?

    Ich stehe vor dem gleichen Problem.

    Vielen Dank und Lg.

  8. DRBD Autostart:
    ___________________________________________________________

    Lieblings Editor öffnen.
    #/etc/init.d/mountdrbd.sh

    #!/bin/bash
    drbdadm primary ha
    mount /dev/drbd0 /srv
    ___________________________________________________________

    muss ausführbar und verlinkt werden:

    sudo chmod +x /etc/init.d/mountdrbd.sh
    sudo ln -s /etc/init.d/mountdrbd.sh /etc/rc2.d/S80mountdrbd.sh

    reboot.

    Grüße

  9. Danke für das ausführliche Tut und die vielen zusätzlichen Hilfen in den Kommentaren – hätte ich ohne euch nicht geschafft. 🙂

  10. Hallo, wenn man ein funktionierendes DRBD mit Lenny hat ist es dann möglich auf Squeeze zu upgraden ohne das die Einstellungen verloren gehen? Hat das schon jemand probiert?
    Grüße

Leave a Reply

Your email address will not be published. Required fields are marked *