the other side of life
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
Konfiguration von heartbeat
Folgt !
| Print article | This entry was posted by rmichel on April 9, 2008 at 10:22, and is filed under HowTo, Linux. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
about 2 years ago
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
about 2 years ago
Danke !
Habs mal hinzugefügt.
about 2 years ago
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]
about 2 years ago
Warum hast denn du das durchgestrichen, dass man dafür drbd 8.2 braucht? Das steht hier in der Mitte…
Gruß,
keks
about 2 years ago
Ja, dass ist eine gute Frage…..
Wenn dann bezieht es sich ja eh auf “become-primary-on both;”
about 2 years ago
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
about 1 year ago
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.
about 1 year ago
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
about 1 year ago
Habs schon gefunden ! Du hast o2cd statt o2cb geschrieben. Nun gehts !
danke
about 1 year ago
Fixed – danke