Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

Die Seite wird erstellt Astrid Schultz
 
WEITER LESEN
Dokumentation der betrieblichen Projektarbeit

Aufbau eines auf Linux basierenden
Hochverfügbarkeitssystems

Dennis Wisnia

Auszubildender zum Fachinformatiker Fachrichtung Systemintegration

Prüflingsnummer: 133 90222

Projektverantwortlicher: Achilleas Anastasiadis

Hostway Deutschland GmbH
Am Mittelfeld 29
30519 Hannover
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

Inhalt
1 Einleitung ................................................................................................................ 3
1.1.      Projektumfeld.................................................................................................. 3
2 Projektbeschreibung ............................................................................................... 3
2.1.      Projektdefinition ............................................................................................. 3
2.2.      Abweichung vom Projektantrag...................................................................... 4
2.3.      Ist-Analyse ....................................................................................................... 4
2.4.      Soll-Konzept .................................................................................................... 4
3 Projektrealisierung .................................................................................................. 6
3.1.      Installation Server ........................................................................................... 6
3.2.      Installation DRBD ............................................................................................ 6
3.3.      Installation Heartbeat ..................................................................................... 6
3.4.      Installation MySQL .......................................................................................... 6
4 Projektkonfiguration ............................................................................................... 7
4.1.      Konfiguration DRBD + Heartbeat .................................................................... 7
4.1.1.        DRBD............................................................................................................ 7
4.1.2.        Heartbeat .................................................................................................... 7
4.2       Konfiguration MySQL Master-Slave ................................................................ 9
5 Tests....................................................................................................................... 10
6 Projektabschluss und Fazit .................................................................................... 11
7 Anhang .................................................................................................................. 12
7.1.      Begriffserklärung ........................................................................................... 12
7.2.      STONITH Verfahren ....................................................................................... 13
7.3.      Hardware Konfiguration der Server .............................................................. 14
7.4.      Quellen .......................................................................................................... 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

1 Einleitung

1.1.   Projektumfeld

Das Projekt fand in der technischen Abteilung der Firma Hostway Deutschland GmbH statt.
Hostway ist einer der größten Internet Service Provider (ISP) weltweit. Hostway verfügt über
mehrere Standorte auf der ganzen Welt, unter anderem in Hannover. Dieser umfasst zwei
Rechenzentren, die gemeinsam über 500.000 Webauftritte bereitstellen.

Die Firma wurde unter dem Namen Server-Service im Jahre 1999 gegründet und fusionierte
2005 mit der Hostway Corporation, 2008 fand dann die Umfimierung in Hostway
Deutschland GmbH statt.

1.2.   Typografische Konventionen

In „Courier New“ geschriebene Wörter sind direkte Befehle oder Pakete aus
Linux. Ein Teil der Fremdwörter wird im Anhang in der Begriffserklärung erklärt.

2 Projektbeschreibung

2.1.   Projektdefinition

Die Webpräsenz der Firma Hostway Deutschland liegt momentan auf einem einzelnen
Server. Dieser Server ist am Ende seines Lebenszyklus und bedarf einer Überholung. Da ein
einzelner Server zudem keine Ausfallsicherheit bietet, entstand der Bedarf nach einem
redundanten System.

Ein Ausfall der Firmenwebsite hätte eine Schädigung des Firmen-Images und wirtschaftliche
Einbußen zur Folge. Die Website hat pro Monat mehrere tausend Aufrufe, die ein Server mit
aktueller Hardware ohne weiteres verarbeiten kann.

Um die Verfügbarkeit im Falle eines Hardwaredefekts gewährleisten zu können, fiel die Wahl
auf ein Hochverfügbarkeitssystem mit „DRBD“, ein System welches ein RAID 1 über
Netzwerk ermöglicht, und „Heartbeat“, welches die Systeme kontrolliert und
dementsprechend die einzelnen Dienste abhängig vom Status des Servers verwaltet.

Um einen Ausfall auf Netzwerkbasis zu umgehen, werden die Server in verschiedenen Racks
stehen und somit das Risiko eines Ausfalls minimieren.

                                                                            Seite 3 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

2.2.   Abweichung vom Projektantrag

Die Umsetzung des Projektes hat im Gegensatz zur Dokumentation aufgrund meiner
Erfahrung in diesem Bereich nicht die erwartete Zeit beansprucht. Daher konnte ich die
gewonnene Zeit in der Umsetzung für die Projektdokumentation einsetzen. Die
Vorbereitung und Planung funktionierten wie geplant. Genauso wie der Projektabschluss
und abschließende Tests.

                                                                        tatsächlicher
                                     geplanter Zeitaufwand
        Arbeitsschritt                                                  Zeitaufwand
                                          (in Stunden)
                                                                        (in Stunden)

 Vorbereitung                   1                                 1

 Planung                        2                                 2

 Umsetzung                      15                                10

 Dokumentation                  6                                 11

 Projektabschluss               6                                 6

 Summe:                         30                                30

2.3.   Ist-Analyse

Die Firmenseite läuft momentan nur auf einem Server, was im Falle eines Hardwaredefekts
oder Versagens der Netzwerktechnik einen Ausfall der Firmen-Webpräsenz zur Folge hat.

Der Server ist zudem ein älteres Modell und somit am Ende seines Lebenszyklus.

2.4.   Soll-Konzept

Aufgabe war es, ein Projekt vom Anfang bis zum Ende selbstständig zu planen und
durchzuführen. Ich entschied mich für das Thema HA (High Availability) - also ein
Hochverfügbarkeitssystem. Das System wird auf Linux (Debian GNU Linux) aufbauen und mit
zwei Servern umgesetzt. Als Software kommen "DRBD" und "Heartbeat" zum Einsatz. Mit
DRBD ist man in der Lage, ein Raid 1 (Zwei Datenträger werden gespiegelt, über DRBD
geschied dies auf Basis von TCP/IP) zu erstellen, Heartbeat steuert den Master und den Slave
und regelt, wann welcher Server die Rolle des Masters übernimmt.

                                                                            Seite 4 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems
Gespiegelt wird lediglich das /var/www Verzeichnis, in welchem die für die Website
relevanten Daten liegen. Als Webserversoftware kommt Apache in Version 2 zum Einsatz.

Abbildung 1: Server und Switches sind redundant und replizieren sich über die Crossover Verbindung

Das System wird auf zwei identischen Servern laufen. Identisch bedeutet, dass beide Server
gleich aufgesetzt sind, die gleiche Hardwareausstattung haben und identisch partitioniert
sind.

Beide Systeme sind in verschiedenen Racks mit redundanter Netzwerkanbindung
angebunden, um einen Ausfall durch einen defekten Switch auszuschließen zu können.
Untereinander werden die Server mit einem Crossoverkabel (CAT-5) verbunden, um die
Daten nahezu in Echtzeit zu synchronisieren und die öffentlichen Netzwerkverbindungen
nicht unnötig zu belasten. Des weiterem bringt dies höhere Übertragungsraten mit sich, da
z.B. Jumbo Frames benutzt werden können.

                                                                                            Seite 5 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

3 Projektrealisierung
3.1.   Installation Server

Die Server wurden in unterschiedlichen Racks im Rechenzentrum Hannover mit einer
automatisierten Installationsroutine installiert und grundkonfiguriert. Durch diese
Installationsroutine wird ein Debian Linux mit dem Codenamen „Lenny“ automatisch mit
den neuesten Updates installiert. Die wichtigsten Tools für den Serverbetrieb werden
mitinstalliert, um nach kurzer Zeit einen funktionsfähigen Server zur Verfügung zu stellen.
Danach mussten lediglich die IP-Adressen, Hostname und Passwort angepasst werden, um
für das Projekt vorbereitet zu sein.

3.2.   Installation DRBD

Bei der Installation von DRBD wurde auf Pakete aus den offiziellen Debian-Quellen gesetzt.
Nach der Installation aus den Paketquellen wurde DRBD zwar installiert, jedoch fehlten noch
die Kernelmodule. Diese mussten neu kompiliert werden. Das Verhalten war
außerplanmäßig und bedurfte einer kleinen Nachbesserung. Die Pakete drbd8-module-
source drbd8-source build-essential linux-headers-2.6 schafften
Abhilfe und nach der Installation dieser wurde das korrekte Kernelmodul geladen und DRBD
konnte von nun an konfiguriert werden.

3.3.   Installation Heartbeat

Die Installation von Hearbeat verlief ohne Probleme und war nach einem aptitude
install heartbeat erledigt. Im Gegensatz zu DRBD war Heartbeat danach
funktionsfähig.

3.4.   Installation MySQL

Die Entscheidung fiel zu Gunsten einer Master/Slave Replikation. Sollte der Fall eintreten,
dass der Slave übernimmt, so ist dennoch menschliches Eingreifen nötig, um den vorherigen
Zustand widerherzustellen. Bei einem Ausfall des Masters übernimmt vorerst der Standby-
Server. Der Slave ist allerdings ein „Read Only“ System was die Auslierferung der aktuellen
Website übernimmt, aber eine Änderung der Daten nicht zulässt. Sobald der Master
repariert wurde, können die Inhalte der Website wieder angepasst werden. Hierzu muss
zunächst der Master/Slave Zustand manuell widerhergestellt werden.

Bei der gewollten Konfiguration von MySQL, also der Master/Slave Variante, verlief auf
beiden Servern die Installation von MySQL gleich. Es wurde lediglich das Paket mysql-
server benötigt, was eine schnelle und einfache Installation durch Aptitude mit allen

                                                                           Seite 6 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems
Abhängigkeiten ermöglicht. Nach dem setzen des MySQL Root Passworts war die
Grundinstallation abgeschlossen und es konnte mit der Konfiguration begonnen werden.

4 Projektkonfiguration

4.1.   Konfiguration DRBD + Heartbeat

4.1.1. DRBD

Nachdem die Konfigurationsdatei angepasst wurde, erstellt man mit drbdadm create-
md ressourcenname die Metadaten für den „Container“, der über das DRBD gespiegelt
werden soll.

Nachdem die Metadaten auf beiden Servern geschrieben wurden, ernennt man den Master
Server (web01) zum „primären“ System.

drbdsetup /dev/drbd0 primary --overwrite-data-of-peer

Danach kann man kann mit mkfs.xfs /dev/drbd0 das Dateisystem (in diesem Fall das
Dateisystem XFS) auf dem neuen Server erstellen.

Gemountet werden kann es erst, nachdem formatiert wurde.

Danach ist die Konfiguration von DRBD abgeschlossen, für den automatischen Wechsel
zwischen Primary und Secondary ist Heartbeat verantwortlich.

4.1.2. Heartbeat

Am Anfang muss eine „Authkey“-Datei angelegt werden, diese enthält einen Schlüssel, um
die Server untereinander zu autorisieren. Nachdem dies geschehen ist, legt man fest, dass
nur User mit „root“-Rechten darauf Zugriff haben.

Anschließend konfiguriert man in wenigen Zeilen Heartbeat selbst.

Die kommentierte Hauptkonfiguration von Heartbeat sieht man hier:

                                                                          Seite 7 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

 debugfile       /var/log/ha-debug       #Das   Debugfile   für   die
Fehlermeldungen
 logfile         /var/log/ha-log         #Logfile    für    sämtliche
Aktivitäten von Heartbeat
 logfacility     local0            #Einstellung fürs Logging

 keepalive       1                        #Die   Zeit   ab   wann   der
andere Node für Toterklärt wird (in Sekunden)
 deadtime        10                       #Die Zeit bis er Umschaltet
 warntime        4                        #Die Zeit bis er anfängt zu
warnen
 initdead        60                       #nach 60 Sekunden wir der
andere Server für Tod erklärt
 udpport         694                      #Der Port auf dem Heartbeat
lauscht
 ucast           eth1 192.168.0.2         #Die IP des anderen Nodes
 bcast           eth1                          #Das Interface über das
Heartbeat läuft (Crossover verkabelung)
 ping_group      switch_link 192.168.0.2 #die      IP     die     nicht
erreichbar sein darf bis heartbeat eingreift
 respawn         hacluster /usr/lib/heartbeat/ipfail #Das Script was
prüft ob der andere Server vorhanden ist.
 auto_failback   off                      #Sobald der primäre Server
wieder erreichbar ist wird nicht wieder zurückgeschaltet, weil nicht
garantieren werden kann, dass der Primäre Server wieder vollkommen
funktionstüchtig ist

 node                  web01                            #Primärer Server
 node                  web02                            #Sekundärer Server

Die Konfiguration ist auf beiden Servern nahezu identisch. Es ändert sich lediglich die IP, die
ping_group und der der Hostname(node). Diese ist immer die des jeweils entgegengesetzten
Nodes.

Die Anweisung für Heartbeat, was im Fall einer Ausfallsituation des Masters veranlasst
werden soll, gibt man in der /etc/heartbeat/haresources an. Dort sind folgende
Zeilen anzugeben:

web01 drbddisk::www \
       83.246.83.90/28 \
     Filesystem::/dev/drbd0::/var/www::xfs::noatime,nodiratime
       apache2

                                                                               Seite 8 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems
Diese Datei regelt folgende Aktionen:

       gibt an, dass die DRBD-Ressource „www“ auf dem System eingebunden wird
        (Wechsel des Primär/Sekundär Status)
       bindet die IP 83.246.83.90 als virtuelles Netzwerkinterface auf eth0
       weitere Informationen zum DRBD mit den Angaben zum Filesystem und dem
        Mountpunkt
       startet Apache2

Alle Dienste werden im Falle des Slave Status auch gleichzeitig wieder deaktiviert und
gestoppt.

Hierbei sollte man noch erwähnen, dass Apache2 nicht mehr vom System gestartet wird,
sondern dass Heartbeat die Steuerung der Dienste übernimmt.

Um dies sicher zustellen muss der automatische Start mit dem folgenden Befehl auf beiden
Systemen deaktivert werden.

update-rc.d –f apache2 remove
Andernfalls würde der Apache2 zwar starten – jedoch würden die Daten für den Webauftritt
fehlen, was fatale Auswirkung auf den Betrieb hätte.

Bevor man Heartbeat das erste Mal mit DRBD startet, bedarf es noch einer kurzen
Anpassung der Rechte:

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 werden Heartbeat die Rechte für die Steuerung von DRBD gegeben.

4.2     Konfiguration MySQL Master-Slave

Nachdem die Installation auf beiden Server gleich verlaufen ist, wird zunächst auf dem
Master Server „skip-networking“ und „bind-address“ auskommentiert und die
Server-ID auf „1“ gesetzt. Hier ist zu beachten, dass man am Ende noch das Binäre Logging
(„Log-Bin“) aktiviert und an einen Platz verlegt, wo man ausreichend Platz hat. In der Binären
Logdatei werden alle Querys, also Zugriffe und Abfragen mit geschnitten um diese an den
Slave zu übergeben dass dieser die selben Vorgänge vornehmen kann.

                                                                              Seite 9 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems
Beim „Slave“ Server ist zusätzlich hinzuzufügen

master-host                                                     =192.168.83.91
master-user                                                     =repli
master-password                                                 =Passwort
master-connect-retry                                            =60

Die Konfiguration ist an diesem Schritt fast abgeschlossen. Man benötigt lediglich noch einen
Replikationsuser, der ähnlich wie „root“ über alle nötigen Rechte auf allen Datenbanken
verfügt.

Am Ende konfiguriert man die Replikation mit wenigen Zeilen in der MySQL CLI. Wichtig
hierbei ist, dass die Daten, master_log_file und master_log_pos auf beiden
Systemen identisch sein müssen.

CHANGE MASTER TO MASTER_HOST='192.168.83.91', MASTER_USER='repli',
MASTER_PASSWORD='Passwort',     MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=98;
START slave;

Den Status der Replikation kann man jetzt mit dem SQL Befehl „SHOW slave STATUS;“
kontrollieren und die laufende Replikation beobachten.

5 Tests

 Fall                                              Ergebnis

 Master herunterfahren                             Heartbeat stellt es fest und schaltet auf
                                                   den Slave

 Slave herunterfahren                              Heartbeat stellt es fest und unternimmt
                                                   keine Aktion

 Externes Netzwerkkabel ziehen                     Heartbeat unternimmt nichts.

 Internes Netzwerkkabel trennen                    Splitbrain Situation

Heartbeat erkennt automatisch eine sogenannte „Split-Brain-Situation“. Diese entsteht,
wenn das interne Kabel defekt ist oder gezogen wurde. Ein vernünftiger Wechsel ist dann
nicht mehr möglich. Man benötigt dann ein System in der Mitte, was ein STONITH Verfahren
auslöst. Darauf wurde in diesem Fall verzichtet, weil die Wahrscheinlichkeit, dass das Kabel
in der Mitte ausfällt, sehr gering ist. Dieses System kann zum Beispiel über IP gesteuerte

                                                                            Seite 10 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems
Steckdose sein, die dann beim fehlerhaften System ausgeschaltet wird, um die Stromzufuhr
zu unterbrechen.

6 Projektabschluss und Fazit

Mit DRBD und Heartbeat kann man auf schnelle und kostengünstige Weise ein
Hochverfügbarkeitssystem erstellen. Man hat alle wichtige Funktionen und Eigenschaften,
die man für ein Hochverfügbarkeitssystem braucht. Man kann das STONITH Verfahren noch
perfektionieren, aber da die Server zwar in verschiedenen Racks stehen, die wiederum nicht
weit voneinander entfernt sind, ist die Wahrscheinlichkeit für einen Schaden am internen
Kabel gering.

Die Software die hier verwendet wurde ist komplett frei verfügbar weil alles auf OpenSource
basiert. Somit benötigt man lediglich die Hardware. Hier ist drauf zu Achten dass diese
Identisch ist um Fehlerquellen auszuschließen.

Nach der Vorstellung der neuen Plattform vor der Geschäftsleitung der Hostway
Deutschland GmbH und einigen Live-Tests wurde das System erfolgreich in Betrieb
genommen und stellt seitdem die Verfügbarkeit des Webauftritts sicher.

                                                                          Seite 11 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

7 Anhang
7.1.      Begriffserklärung

 Server            ein Computer, der auf lange Laufzeiten und Performance ausgelegt ist

 Linux             ein freies Betriebssystem

 DRBD              Distributed Replicated Block Device, was eine Erstellung eines Raid 1 über
                   ein Netzwerk ermöglicht
 Heartbeat         steuert DRBD und regelt die Dienste auf dem jeweiligen Master Server

 RAID              anhand der verschiedenen Raid Level kann man festlegen, in welcher Form
                   die Daten über mehrere Laufwerke verteilt werden

 MySQL             eine freie Datenbank-Engine, die es für sämtliche großen Betriebssysteme
                   gibt

 Split-Brain       beide Nodes gehen davon aus, dass sie die Masterrolle bekommen haben

 STONITH           (engl. Shoot the other node in the head) bedeutet, dass Heartbeat, sobald es
                   feststellt, dass ein anderes Device versucht, die Daten zu beschreiben, es
                   einfach deaktiviert

 Crossover-        Eine direkte Server zu Server Verbindung ohne einen Switch dazwischen.
 Verbindng

 aptitude          Ein Paketmanager für Debian GNU Linux. Basiert auf apt-get und ist um
                   einige Funktionen erweitert worden. So merkt sich Aptitude die
                   Abhängigkeiten eines Paketes und beim Deinstallieren eines Programms
                   werden alle Abhängigkeiten sauber mit entfernt.

                                                                         Seite 12 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

7.2.     STONITH Verfahren

Das STONITH Verfahren (Shoot the other node in the head) ist die Ausweitung des Themas.
In dem Fall war es nicht notwendig weil der Kosten / Nutzen eher gering ist. Das STONITH
Device kann eine über IP gesteuerte Steckdose sein. Diese wird dann im Fall eines Split-
Brains von dem Slave ausgelöst um den Strom des Master Server zu deaktivieren, damit der
Slave seinen Betrieb aufnehmen kann.

Abbildung 2: Zwischen den Servern befindet sich das STONITH Device was in der Lage ist die Stromzufuhr der
Server zu trennen.

                                                                                       Seite 13 von 14
Dennis Wisnia
Aufbau eines auf Linux basierenden Hochverfügbarkeitssystems

7.3.   Hardware Konfiguration der Server

 Servertyp                 Dell Poweredge 850

 CPU                       Pentium 4 2,80Ghz

 Arbeitsspeicher           1 GB DDR2

 Festplatte                73 GB SCSI RAID 1

 Netzwerk                  2x 1 Gbit/s

7.4.   Quellen

http://www.drbd.org/docs/about/

http://www.linux-ha.org/doc/

http://www.howtoforge.de/howto/einrichten-von-master-master-replikation-mit-mysql-5-
auf-debian-etch/

http://lovelycharts.com/

Desweiteren wurden interne Quellen aus der Firmeninternen Wiki bezogen.

                                                                          Seite 14 von 14
Sie können auch lesen