original in en Atif Ghaffar
en to de Guido Socher
Atif ist ein Cham�leon. Er ver�ndert seine Rollen von
Systemadministrator zu Programmierer, zu Lehrer, zu Projektmanager
oder was immer in seinem Beruf ben�tigt wird.
Gelegentlich findet man ihn sogar auf der Toilette mit seinem Laptop wie
er gerade dabei ist, Dokumentation zu schreiben.
Atif glaubt da� er Linux und der Open-Source Gemeinde sehr viel
verdankt. Mehr �ber ihn findet man auf seiner
Homepage
Nun zu einer ernsthafen Diskussion
Ha steht f�r High Availability, zu Deutsch Hochverf�gbarkeit. Ich habe gro�es Vertrauen in Linux, aber ich habe wenig Vertrauen in die Firmen, die die Hardware entwickeln. Bei einem Server der Tag und Nacht l�uft, wird eines Tages die Stromversorgung, die Netzwerkkarte, das Motherboard, u.s.w... versagen. Dadurch wird mein Server zusammenbrechen. Weil dieser Server versagt, werden unter Umst�nden weite Teile des Firmennetzes versagen. Z.B:
HA (High Availability oder Hochverf�gbarkeit) ist, wie der Name
sagt, ein System, das immer verf�gbar ist.
Das kann wichtig sein f�r Dienste, die das Funktionieren der
Firma garantieren:
Beispiel:
In diesem Beispiel entwickeln wir ein Rechnercluster, auf dem
der Apache Webserver l�uft.
F�r diese Cluster benutzen wir eine gute Maschine mit
starker CPU und viel Speicher. Eine zweite Maschine hat gerade genug
CPU Leistung und Speicher, um den Dienst alleine laufen zu lassen.
Der erste Rechner wird der Hauptrechner sein (master) und der
zweite der Ersatzrechner (backup).
Die Aufgabe des backup Rechners ist es, dem master den Dienst wegzunehmen,
sobald er denkt, da� der Master nicht mehr richtig antwortet.
Wie greifen die Benutzer auf den Webserver zu?
Sie tippen http://intranet/ in ihren Browser und der DNS Server
lenkt das auf die IP Adresse 10.0.0.100 (z.B) um.
Wie w�re es, wenn wir einfach im Falle des Versagens eines
Rechners den Eintrag im DNS Server so �ndern, da� er auf einen
Rechner mit einer anderen IP Adresse geht?
Sicher, das ist
eine M�glichkeit, aber DNS wird auf der Client-Seite in einem Zwischenspeicher
gehalten (DNS cache) und was ist, wenn wir DNS mit HA laufen lassen
wollen?
Eine bessere M�glichkeit ist, da� der backup die IP Adresse des
masters �bernimmt, falls der master versagt. Diese Methode nennt man
IP takeover. All Webbrowser werden weiterhin Anfragen an
10.0.0.100 schicken, aber dabei auf den backup zugreifen.
Wie wei� der master/backup, da� der jeweils andere versagt hat?
Sie unterhalten sich sowohl �ber die serielle Schnitstelle als
auch �ber ein Crossover Ethernetkabel. Man benutzt beides, Ethernetkabel
und serielles Kabel aus Redundanzgr�nden.
Sie �berpr�fen ihren Herzschlag. Ja, wie beim Menschen. Wenn
das Herz nicht mehr schl�gt, ist der Mensch vermutlich tot.
Die beiden Rechner schicken sich in regelm��igen Abst�nden kurze Nachrichten
zu. Wenn diese Nachrichten ausfallen (Herzschlag), dann ist der Rechner
ausgefallen. Das Programm, das man dazu braucht, nennt sich, rate mal ...,
heartbeat (Herzschlag).
heartbeat gibt es unter
www.linux-ha.org/download/.
Das Programm zur �bernahme der IP Adresse nennt sich fake und ist
in heartbeat enthalten.
Wie schon gesagt werden wir zwei Rechner verwenden, einen leistungsstarken
und einen weniger leistungsstarken.
Beide Maschinen haben zwei Netzwerkkarten und jeweils eine serielle
Schnittstelle. Wir brauchen auch ein crossover cat 5 RJ45 Ethernetkabel
und ein null modem Kabel (cross over serial cable)
Das erste Ethernet Interface (eth0) benutzen wir auf beiden
Maschinen zum Anschlu� an das Netzwerk. Das zweite Ethernet Interface (eth1)
wird f�r das private Heartbeat Netz benutzt, �ber das wir UDP Pakete schicken.
Hier die Adressen f�r eth0 auf beiden Rechnern:
clustnode1 ip Adresse 10.0.0.1
clustnode2 ip Adresse 10.0.0.2
Nun reservieren wir eine weitere ip Adresse als eigentliche
Serviceadresse. Diese ist 10.0.0.100. Im Augenblick brauchen
wir diese Adresse noch keiner von beiden Machine zuzuweisen.
Als n�chstes konfigurieren wir die zweite Netzwerkkarte und
geben ihnen Adressen aus einem Bereich, der noch frei ist.
Z.B:
clustnode1 ip Adresse 192.168.1.1
clustnode2 ip Adresse 192.168.1.2
Jetzt k�nnen wir die seriellen Schnitstellen verbinden und
testen, da� der hearbeat funktioniert.
(Es ist einfacher, wenn man den gleichen seriellen Port
auf beiden Rechnern benutzt.)
N�heres unter
http://www.linux-ha.org/download/GettingStarted.html
Die Installation ist ganz einfach. heartbeat ist als rpm und tar.gz File verf�gbar. Wenn Du Probleme mit der Installation hast, dann solltest Du besser nicht die Verantwortung f�r ein HA System �bernehmen (... oder es wird vielleicht ein NA [not available] System). Eine gute Anleitung findet sich unter "Getting Started with Linux-HA" auf der linux-ha.org Seite.
Konfiguration von hearbeat
Die Konfigurationsdateien sind in /etc/ha.d
Editiere /etc/ha.d/authkeys und schreibe folgendes:
#/etc/ha.d/authkeys auth 1 1 crc #end /etc/ha.d/authkeys
debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 deadtime 10 serial /dev/ttyS3 #change this to appropriate port and remove this comment udp eth1 #remove this line if you are not using a second network card. node clustnode1 node clustnode2
#masternode ip-address service-name clustnode1 10.0.0.100 httpdDas legt fest, da� clustnode1 der master ist. Wenn er ausf�llt �bernimmt backup und wenn er wieder funktioniert, wird er den Dienst wieder erhalten.
/etc/ha.d/httpd startauszuf�hren und wenn das versagt, wird
/etc/rc.d/init.d/httpd startausgef�hrt.
/etc/ha.d/httpd stopund falls das nicht geht:
/etc/rc.d/init.d/httpd stopWenn man fertig mit der Konfiguration von clustnode1 ist, kann man die Dateien nach clustnode2 kopieren.
Wenn der Service httpd von clusternode1 nach clusternode2 geht,
dann sieht man dort nicht dieselben Daten. Alle Dateien fehlen und
die Daten der CGI-Bins.
Zwei Antworten:
1) Man sollte niemals von CGI's in Dateien schreiben. Stattdessen
benutzt man eine Netzwerkdatenbank. MySQL ist sehr gut.
2) Man kann beide Clusternodes an ein zentrales externes
SCSI Plattensystem anschlie�en. Hierzu mu� man sicherstellen, da�
nur ein Rechner immer mit dem SCSI Speichersystem redet und da�
beide Rechner unterschiedliche SCSI IDs haben (z.B 6 und 7)
Bei Adaptec 2940 SCSI Karten kann man zum Beispiel die
SCSI ID des Hostadapters �ndern. Billigere Karten lassen das nicht zu.
Einige Raid Controller werden als cluster-aware Controller verkauft.
Hier ist vorher zu pr�fen, ob diese sich einstellen lassen, ohne da� man
zuerst das Microsoft cluster kit kaufen mu�.
Ich hatte zwei NetRaid Controller von HP und diese unterst�tzen
definitiv nicht Linux. Solches Zeug sollte man vermeiden.
Eine weitere M�glichkeit ist Fibrechannel Karten, Fibrechannel hub und
Fibrechannel Storage. Diese L�sung ist gut, aber erheblich teurer als
zwei SCSI Karten.
Eine sehr gute L�sung ist GFS (Global File System, siehe unten) �ber
Fibrechannel. Damit kann man auf die Dateien zugreifen, als ob sie auf
localen Platten l�gen.
Wir benutzen GFS in einer Produktionsanlage mit 8 Rechnern, wovon
2 in einer wie oben beschriebenen HA Konfiguration laufen.
Man kann sehr einfach einen Active/Active Server bauen, wenn man
ein gutes Plattenspeichersystem hat. Fibrechannel und GFS sind hier eine gute Wahl.
Wenn du mit NFS vertraut bist, kann man auch das benutzen, aber ich
w�rde eher davon abraten.
Jedenfalls kann man serviceA dem clustnode1 zuweisen und
serviceB clustnode2. In meine haresource file steht z.B:
clustnode2 172.23.2.13 mysql clustnode1 172.23.2.14 ldap clustnode2 172.23.2.15 cyrusIch benutze GFS und deshalb gibt es kein Problem mit gleichzeitigem Zugriff auf die Daten.