Planungen zum Aufbau für einen Apache Load Balancer

In den Artikeln „MySQL Cluster oder Hot-Stand-By Lösung? Eine Frage der Hochverfügbarkeit“ und „MySQL Replikation (Master/Slave) einrichten„haben wir uns mit der Master/Slave-Funktionalität zur Replikation von MySQL beschäftigt. Der Grund für diese Tätigkeit war die Planung eines Web-Clusters, welches wir mit einfachen Mitteln erreichen wollen. Im heutigen Teil möchten wir uns mit dem Load-Balancer beschäftigen.

Anfänglich sind wir davon ausgegangen, dass wir einen MySQL-Master Server haben. Alle Clients bzw. alle Frontend-Server sollten via Webservice ihre Datenbankergebnisse abholen. Diese Architektur hätte zur Folge gehabt, dass der Datenbankserver geclustert werden muss. Planungen zur Folge gab es die Annahme, dass ein Frontend-Server genügen würde.
Schnell hat sich als eigentliche Schwachstelle der MySQL-Master-Server erwiesen, über den alle MySQL-Anfragen liefen. Da dieser Server auch regen Kontakt zum eigentlichen Datenbank-Master-PC in einem lokalen Netzwerk hält und auch noch als Fileserver „missbraucht“ wird, musste die Planung geändert werden. In der aktuellen Planung soll der Datenbank-Master PC nur noch die Datenbank für die Replikation bereitstellen. Alle Web-Frontend-Server haben eine eigene lokale MySQL-Datenbank, die als Slave für die Replikation dient. Jeder Web-Frontend-Server hat somit eine eigene Datenbank-Instanz, kann lokal die Anfragen behandeln und fällt im Fehlerfall als eine Komponente aus.

Folgende Gedanken liegen der aktuellen Planung zu Grunde

  • Web-Frontends zu clustern und auch noch einen geclusterten Datenbank-Server zu betreiben, bedeutet größere Wartung
  • Lokale MySQL-Instanzen bedeuten geringere Netzlast bei einer Anfrage bei keinen Mehrkosten, da MySQL lizenzfrei ist.
  • Die MySQL-Datenbank-Ausfallsicherheit ist noch größer, da mit jedem weiteren Web-Frontend die Anzahl der Spiegelung steigt.
  • Der MySQL-Master Server kann zu Wartungszwecken jederzeit abgeschaltet werden.

Ein Vorteil dieser Planung ist, dass jederzeit bei steigender Last der Webseite ein neuer Server in die „Farm“ hinzugefügt werden kann. Die Installation und Konfiguration des neuen „Farm-Mitglieds“ ist binnen weniger Stunden erledigt. Die Integration über den Apache Load Balancer bedeutet keinen nennenswerten Ausfall des Systems (apache restart notwendig).

Hot-Stand-By-Server als letzte Rettung
Auch der MySQL-Master Server könnte über die Konfiguration des Apache Load-Balancer als limitiertes Farmmitglied dienen. Er würde so, seiner eigenen Auslastung entsprechend, weniger Besucher als die vollwertigen Frontend-Server zugeteilt bekommen. Dieser Server kann jedoch auch als Hot-Standby-Server dienen. Wenn alle Frontend-Server ausfallen würden, könnte dieser als verbleibender Server die Anfragen beantworten. Dieser Fall sollte jedoch nie eintreten, da der Server mit der auf ihn zukommenden Last relativ schnell an seine Grenzen stoßen würde.

Zu bewerten ist noch, auf welchem Server der Load-Balancer installiert wird und ob mit einem Load-Balancer auszukommen ist. Aktuell ist der Load-Balancer auf einer separaten Maschine, die auch als Nameserver fungiert, installiert. Bei Ausfall dieser Maschine ist das Web nicht mehr erreichbar.

Die Konfiguration des Load-Balancers werden wir im nächsten Schritt behandeln.

Schreibe einen Kommentar