HA mit Debian Lenny & drbd8, ocfs2, heartbeat, pound (http) und mysql
Posted on Wed 09 April 2008 in Linux • 2 min read
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 !