Hochverfügbarkeit mit Linux

Lesen Sie auch folgenden Eintrag über Pacemaker, GlusterFS und Corosync!

Linux-HA V2

Linux-HA  habe ich mit CentOS fuer einen Hochverfuegbarkeits-Webserver eingesetzt. Es geht in
erster Linie nicht nur darum den Ausfall eines Servers durch einen Aktiv / Passiv Cluster abzufangen, sondern auch den Service HTTP als solches redundant zu halten.

Der Aufbau lässt sich am besten mit einer kleinen Zeichnung erklären:

Klehr_LinuxHA

Auf der Firewall wird der Port 80 einfach auf die ClusterIP weitergeleitet. Diese befindet sich auf einem virtuellen Interface (eth0:0) auf dem aktiven Clusterknoten. Bei einem Ausfall des aktiven Knoten merkt der Heartbeat das keine Reaktion mehr vom aktiven Server kommt und schaltet auf den passiven Knoten um. Bei diesem Umschalten wird der Dienst Apache2 Webserver auf dem aktiven Knoten zur Sicherheit noch gestoppt und auf dem passiven Knoten, welcher jetzt zum Aktiven geworden ist gestartet. Ueber den CRM (Cluster Ressource Manager) kann man auch den Dienst selbst ueberwachen, denn ein Server der hochverfuegbar laeuft bringt nichts wenn der Webserverdienst abgestuertzt ist. Linux HA ueberwacht auch den Service und schaltet auf den passiven Knoten um wenn dieser auf dem Aktiven nicht mehr reagiert. Damit der Webcontent immer syncron bleibt auf beiden Servern wird das WWW Verzeichnis durch ein Netzraid gespiegelt. Dieses habe ich mit DRBD umgesetzt. Damit kann man auf jedem Knoten eine Partition wie ein Festplattenraid über das Netzwerk spiegeln.

DRBD Filesystem

DRBD läuft wie ein Cluster im Primary / Secondary Modus. Dabei ist der Primary Read-Write geschaltet und übergibt diese Rolle beim Ausfall auf den passiven Cluster. Dieses muss man jedoch in dem Ressourcefile von Linux-HA definieren:


node0 IPaddr::172.16.0.10/24 drbddisk::www Filesystem::/dev/drbd0::/srv/www::ext3::defaults httpd

Beschreibung:

node0 Gibt den aktiven Knoten an
IPaddr Die virtuelle IP des Knotens
drbddisk Aktiviert das DRBD Device als Primary
Filesystem Mountet das Filesystem
httpd Der Dienst der gestartet werden soll (Initscript kopieren)