Login
Newsletter
Werbung

So, 15. Februar 2009, 00:00

Projekt »Virtueller hochverfügbarer Linux-Server«, Teil 10

Optimierungen und Einrichtung von Heartbeat mit CRM

Heartbeat mit CRM

Nachdem wir in Folge 9 mit der grafischen Konfiguration des Cluster Resource Managers (CRM) experimentiert haben, machen wir jetzt ernst. Die produktiven virtuellen Maschinen werden wir leider vorübergehend herunterfahren müssen, denn wir werden Heartbeat stoppen, die Konfiguration ändern und dann mit einer leeren CRM-Konfiguration wieder hochfahren.

Wir müssen lediglich die Konfiguration von Heartbeat ändern, alles andere bleibt unangetastet. Allerdings müssen wir jetzt, falls noch nicht erledigt, eine neuere Version von Heartbeat installieren. Diese könnten erfahrene Benutzer aus dem Debian-Quellcode-Paket mit debuild selbst generieren. Es gibt auch eine Version bei Debian Backports, aber die »offiziellste« Version ist im Build Service von OpenSUSE zu finden, wo es Pakete für einige Distributionen gibt. Mittlerweile ist diese auf Version 2.1.4 aktualisiert. Sie dürfte die empfehlenswerteste Version darstellen.

Auf dem Server dürfte in der Regel keine GUI laufen, daher genügt es, dort das Paket heartbeat zu installieren. Dieses hängt ab von den Paketen libcurl3, libglib2.0-0, libltdl3, libnet1, libopenhpi2, libopenipmi0, libsnmp9, libxml2, iproute, gawk, libxml2-utils und uuid-runtime, die alle Bestandteil der Distribution sind und von Hand installiert werden müssen, falls sie noch fehlen. Doch bevor wir heartbeat mit dpkg -i installieren, halten wir das alte heartbeat an (/etc/init.d/heartbeat stop) und ändern gleich die Konfiguration.

Die Konfiguration von Heartbeat 2.1 hat sich gegenüber 2.0 nicht grundlegend geändert. Die Datei /etc/ha.d/authkeys bleibt wie zuvor. Um den neuen Clustermanager zu verwenden, müssen ein paar Direktiven in /etc/ha.d/ha.cf eingefügt werden.

/etc/ha.d/ha.cf

use_logd on
ucast br1 172.16.1.1
ucast br1 172.16.1.2
ucast eth2 192.168.2.1
ucast eth2 192.168.2.2
auto_failback on
node erdbeere
node himbeere
crm on
apiauth cibmon uid=hacluster
respawn hacluster /usr/lib/heartbeat/cibmon -d
apiauth mgmtd uid=root
respawn root /usr/lib/heartbeat/mgmtd -v
apiauth dopd gid=haclient uid=hacluster
respawn hacluster /usr/lib/heartbeat/dopd

Die Zeilen ab crm on sind neu gegenüber der alten Konfiguration. Sie haben zur Folge, dass der Cluster Resource Manager (CRM) die Regie übernimmt. Ferner werden die Daemons cibmon und mgmtd gestartet. Die Konfiguration des CRM befindet sich in der Datei /var/lib/heartbeat/crm/cib.xml, die wir jedoch nicht von Hand bearbeiten wollen. Wer es dennoch tun will, kann die alte Konfiguration in /etc/ha.d/haresources konvertieren durch den Befehl

/usr/lib/heartbeat/haresources2cib.py --stdout -c /etc/ha.d/ha.cf \
 /etc/ha.d/haresources > /var/lib/heartbeat/crm/cib.xml

Doch das dürfte noch einige Nacharbeit nach sich ziehen.

Zwar sprach ich eben noch von lediglich einer geänderten Zeile in /etc/ha.d/ha.cf, aber wir nutzen die Downtime, um noch einige andere Verbesserungen einzufügen. Zum einen gibt es die Option coredumps false. Für unsere Zwecke ist sie sehr wichtig. Wenn wir nämlich den hochverfügbaren Programmen gestatten, Coredumps zu speichern, dann kann es passieren, dass KVM abstürzt und eine 600 MB große (oder noch größere) Datei in /var/lib/heartbeat/cores hinterlässt. Schnell ist so die ganze Rootpartition gefüllt, was größere Probleme nach sich ziehen kann. Also: coredumps false!

Ein weiterer wichtiger Punkt betrifft den Umgang von DRBD mit Fehlersituationen. Laut der DRBD-Anleitung sollte man den »DRBD Outdate Peer Daemon«, kurz dopd, starten. Dies wird mit zwei weiteren Zeilen in /etc/ha.d/ha.cf erreicht (das Programm ist bereits vorhanden):

apiauth dopd gid=haclient uid=hacluster
respawn hacluster /usr/lib/heartbeat/dopd

Dies erfordert noch folgende Anpassungen an den Permissions, damit dopd auch aktiv werden kann:

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

Hier noch einmal die komplette Datei /etc/ha.d/ha.cf zur Übersicht:

use_logd on
ucast br1 172.16.1.1
ucast br1 172.16.1.2
ucast eth2 192.168.2.1
ucast eth2 192.168.2.2
auto_failback on
node erdbeere
node himbeere
crm on
apiauth cibmon uid=hacluster
respawn hacluster /usr/lib/heartbeat/cibmon -d
apiauth mgmtd uid=root
respawn root /usr/lib/heartbeat/mgmtd -v
apiauth dopd gid=haclient uid=hacluster
respawn hacluster /usr/lib/heartbeat/dopd

Man kann auch noch überlegen, ob man lieber auto_failback off setzt. Damit verbleiben Ressourcen, die nach einem Serverausfall migriert wurden, auf dem aktuellen Server, auch wenn der ausgefallene zurückkehrt. Eine Migration zurück kann man immer noch später von Hand anstoßen.

Ist alles erledigt, dann kopieren wir die Konfigurationsdatei auf den anderen Server, da beide immer übereinstimmen müssen. Dann übernehmen wir die neue Konfiguration mit /etc/init.d/heartbeat reload auf beiden Servern.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung