Höhere Verfügbarkeit mit 2 Maschinen: Hearbeat, DRBD (und Pound))

dev

Registered User
Hallo,

ich mache mir gerade Gedanken um höhere Verfügbarkeit und habe dazu ein paar Fragen.

Setup

2x identische dedizierte Maschinen bei einem Anbieter (Debian)

Was soll erreicht werden?

Es geht nicht um 100% Verfügbarkeit, es geht mir darum, dass ich beim Hardware-Ausfall einer Maschine etwas Zeit gewinne, weil der 2. Node erstmal übernehmen kann.

Was brauche ich nicht unbedingt?

Loadbalancing. Ich würde in Kauf nehmen, dass der passive Node ungenutzt "mitläuft".

Mein momentaner Lösungsansatz

Datenkonsistenz würde ich mit DRDB auf beiden Rechner herstellen, also praktisch RAID über das LAN. Soweit ich das in Erfahrung bringen konnte, ist DRDB die beste Möglichkeit in diesem Kontext, da man mit rsync sich z. B. Probleme bzw. zusätzliche Komplexität einkauft (MySQL Dump vor Sync etc.).

Für die Verfügbarkeit würde ich Heartbeat einsetzen: Node 1 fällt aus, Node 2 übernimmt die IP und wird aktiv.


Folgende Fragen habe ich:

1. Ist das Szenario erstmal richtig bezgl. des Lösungsansatzes?

2. Ein Loadbalancer wie Pound bietet sich an, um Node 2 nicht ungenutzt mitlaufen zu lassen?

3. Der IP-Takeover setzt voraus, dass der Provider die IP-Adressen nicht an die MAC bindet bzw. sich beide Maschinen im selben VLAN befinden?

4. Wenn beide Voraussetzungen unter 3 nicht erfüllt sind, dann muss ich mit vServern und einem internen privaten Network arbeiten?

Danke!
 
1. Für active/standby ist DRBD + Heartbeat eine schöne und funktionierende Lösung.

2. DRBD synchronisiert auf Block- und nicht auf Dateisystemebene.
Das muß man bei der Auswahl des darüberliegenden Dateisystems beachten.
Klassische, nicht "cluster-aware" Filesysteme wie ext3 können nur einmal (auf dem aktiven Knoten) gemountet werden - erst beim Failover mountet es der andere Knoten. Dafür muß die Applikation davon auch nichts wissen - sie "sieht" ein normales Dateisystem.
Wenn Du Loadbalancing auf Applikationsebene willst, muß die Applikation aber damit umbegen können.
Für MySQL z.B. würde ich eine Replikation aufsetzen.

3. Aus Sicherheitsgründen verfolgen viele Anbieter den Ansatz "1 VLAN pro Server" - was eine IP-Übernahme recht zuverlässig verhindert. :)
Dafür gibt es meist providerspezifische Mechanismen zum IP-Failover - z.B. ein paßwortgeschützter HTTP-Request.
Den muß man dann in die Heartbeat-Konfiguration einbauen.
Auch bieten inzwischen mehrere Serverhoster private VLANs zwischen Srevern desselben Kunden an.

4. Zwei vServer auf demselben Host widerspricht irgendwie der Idee der Hochverfügbarkeit :D
Gehen tut das natürlich.
 
Hi Whistler, danke für Deine ausführliche Antwort!

Zu 4. meinte ich natürlich, dass sich die vServer auf verschiedenen Hosts befinden.

Vielleicht noch einmal kurz 3 aufgegriffen - mit dem privaten VLAN komme ich ja nicht weiter, wenn ich mir das recht überlege. Ich brauche ja 3 IP-Adressen:

- 1x IP Node 1 inkl. MAC
- 1x IP Node 2 inkl. MAC
- 1x virtuelle IP, auf die die Domains aufgeschaltet sind (A Name Record)

Die virtuelle IP ist es ja, die dann im Ausfall die Maschine wechselt. Da nützt mir aber doch ein privates Network nur bedingt? Ich brauche ja praktisch 3 öffentlich zugänglich IP-Adressen für 2 Server.

Oder was meintest Du mit dem Hinweis auf ein privates VLAN genau?
 
Möchtest du das ganze nun auf V-Servern oder auf dedizierten Servern nutzen? Auf V-Servern macht es natürlich nur bedingt Sinn. Die Frage ist auch, ob du drbd und ne eigene loopback Adresse (für DSR) auf einem V-Server nutzen kannst.

Die beiden Server müssen sich im gleichen V-Lan befinden, kann im Prinzip aber jeder Hoster dir so einrichten.

Wenn es von Interesse ist, wir bieten aktuell einige Server an. Solltest du 2 davon mieten, erhälst du das Loadbalancing für 5 Services von uns kostenfrei dazu (wir betreiben dedizierte Loadbalancer).

Viele Grüsse
Michael
 
Last edited by a moderator:
Hi Michael,

auf dedizierten Maschinen. Mein Hinweis mit den vServern ist so zu verstehen, dass ich selbst virtualisiere und deswegen damit ein weiteres Werkzeug habe, um evtl. Probleme zu umgehen. Aber wahrscheinlich nützt das hier gar nichts, da die IP-Adressen ja erstmal zu den Hardware-Nodes kommen müssen. Bleibt also das Problem mit den 2 Maschinen in einem VLAN.

Pijay said:
Die beiden Server müssen sich im gleichen V-Lan befinden, kann im Prinzip aber jeder Hoster dir so einrichten.

Dein Wort in Gottes Ohr - aber das ist halt leider nicht überall möglich. Serverloft z. B. gibt nicht mal die Garantie, wenn man 2 Maschinen gleichzeitig mietet. Mit Hosteurope müsste ich mal sprechen.

Abgesehen davon bin ich mir sicher, dass Ihr mir eine gute Lösung anbieten könntet, allerdings liegt meine monatliche Belastungsgrenze bei max. 100 EUR/Server netto.
 
Wenn du Debian einsetzt würde ich dir folgendes setup vorschlagen:
Pacemaker Pacemaker-Gui Corosync Drbd.
Ist zukunfts sicherer.
 
Wir haben für einen Kunden folgende Lösung ausgearbeitet:

Primär ging es darum, die Verfügbarkeit gering zu erhöhen und ein Fehler Management einzuführen. Daher, fällt das haupt Hostsystem aus, sollte die Webseite dennoch erreichbar bleiben, hier aber eine Fehlerseite generiert werden.


Die Verteilung sieht wie folgt aus:

Hostsystem 1:
Quad Core AMD CPU
8192 MB Arbeitsspeicher
2x 250 GB RAID 1 Verbund
2x 1000 GB RAID 1 Verbund

System hält
- Backup Webserver VM
- MySQL VM

Diese sind aufgrund der Datenmenge auf dem TB RAID integriert. Die Backup Webserver VM wird jede Nacht inkrementell mit der Haupt Webserver VM auf dem Host 2 gespiegelt.

Hostsystem 2:
Quad Core AMD CPU
8192 MB Arbeitsspeicher
2x 250 GB RAID 1 Verbund

System hält
- Webserver VM

Beide Systeme sind untereinander mit einem eigenen Gbit Netz verknüpft. Der Grundgedanke hier war, die Last der MySQL Datenbank und des Webservers gleich zu verteilen mit ausreichend Ressourcen im Backend. Vom Prinzip her ist das kein Cluster Verbund, wobei dank der Umsetzung der Systeme als VM dieses Netz jederzeit zu einem Clusterverbund umfunktioniert werden kann. Solange allerdings die Ressourcen ausreichen, ist das nicht weiter notwendig.

Fällt das Host2 System aus, wird automatisch die IP an die Backup Webserver VM von Host1 übergeben und der Webseitenbetrieb läuft einwandfrei weiter. Die Anwendung des Kunden ist hierbei 99 % auf der Datenbank basierend, daher ist es kein Problem, wenn die Files auf den Stand von vor 24 Stunden basieren. Fällt Host 1 aus, wird über Host 2 eine Fehlerseite generiert, welche Wartungsarbeiten ankündigt. Somit ist die Webseite prinzipiell immer erreichbar und die Besucher sehen vermeintlich geplante Wartungsarbeiten, bis das Host 1 System wieder in Betrieb geht. Die IP Verteilung basiert auf Heartbeat, hierbei prüft Heartbeat nur, ob der Webserver verfügbar ist. Die Überwachung der MySQL Datenbank und des Tomcat Servers im Backend übernimmt livewatch. Fällt einer der beiden Dienste aus, erhält ein Techniker eine entsprechende Nachricht und auf der Webseite werden wie gewünscht Wartungsarbeiten definiert. Daher wird auch nur eine IP Adresse benötigt, welche von der Webserver Backup VM und der Webserver VM gehalten werden.
 
Back
Top