Apache HTTP - Balancer

Load Balancing und Apache – klare Vorteile für Nutzer und Administratoren

Der Apache HTTP Server ist einer der am häufigsten eingesetzten Webserver. Die Plattformunabhängigkeit und das quelloffene System sind nur zwei der vielen Gründe für die Beliebtheit von Apache. Wichtig für den reibungslosen und professionellen Betrieb von Webservern ist ein Load Balancer. Vor allem, wenn auf einem System mehrere Webseiten mit angeschlossenen Datenbanken vorhanden sind oder eine Webseite im Laufe der Zeit stark gewachsen ist, wird das Load Balancing zum Thema. Die Lastverteilung sorgt dafür, dass automatisch und sofort mehr Leistung von anderen Servern bereitgestellt wird, wenn die Auslastung des Webservers in einen kritischen Bereich gerät. In der Praxis ist der Load Balancer der eigentlichen Server-Infrastruktur vorgeschaltet und leitet eingehende Anfragen an einen der Apache Server weiter, der ausreichend freie Ressourcen zur Verfügung hat. Nutzer haben den Vorteil, dass Webseiten immer zuverlässig und schnell reagieren. Für Administratoren erleichtert sich hingegen die Wartung und der Betrieb. Das System reagiert automatisch und fängt auch Ausfälle von einzelnen Webservern ab. Darüber hinaus zeigen sich noch weitere Vorteile in der Praxis.

Apache und die automatische Lastverteilung

Mit der Version 2.1 hielt eine interessante Funktion Einzug in den Apache HTTP Server. Hierbei handelte es sich um das bereits angesprochene Load Balancing, das mithilfe des Moduls mod_proxy_balancer umgesetzt werden kann. Es wird auf dem Server, der bisher als Webserver diente, zusätzlich zu Apache installiert. Aus diesem System wird nun der eigentliche Load Balancer. Hinterher geschaltet werden nun beliebig viele Webserver, die vom Load Balancer angesprochen werden. Für den Nutzer gibt es keine sichtbare Veränderung. Er ruft die Webseite wie gewohnt auf. Seine Anfrage wird vom Apache Load Balancer entgegengenommen. Dieser leitet die Anfrage an einen der Webserver, die an den Load Balancer angeschlossen sind, weiter und holt die benötigten Daten. Der Load Balancer wählt hierbei ein System, das ausreichend freie Ressourcen hat. Somit ist gewährleistet, dass die Nutzer jederzeit auf Webseiten mit hoher Performance zugreifen.

Der mod_proxy_balancer bietet noch weitere Vorteile, die besonders den Nutzern zugutekommen. Dies betrifft zum Beispiel Logins und Sessions. Sobald der Load Balancer einen Benutzer einem Webserver zugewiesen hat, bleibt dieser Server für die gesamte Sitzung zuständig für den Nutzer. Dies hat den Vorteil, dass es zu keinem ungewöhnlichen Verhalten der Webseite kommt, etwa, dass der Nutzer sich erneut einloggen muss. Egal, wie viele Webserver im Back-End tatsächlich vorhanden sind, für die Besucher der Webseite bleibt dies in der Regel unsichtbar. Sie rufen weiterhin die bekannte Webadresse auf und merken keinen Unterschied.

Um ein Cluster, bestehend aus mehreren Servern, aufzusetzen, benötigen Sie ein weiteres Modul des Apache HTTP Servers. Der mod_proxy ist dafür zuständig, einen virtuellen Host aus mehreren physikalischen Maschinen zu erstellen. So wird es möglich, Web-, Anwendungs- und Datenbankserver auf mehrere Systeme zu verteilen. Ebenfalls erlaubt mod_proxy es, zwei oder mehr Server mit der gleichen Aufgabe zu betrauen. Auf diese Weise werden zwei getrennte Server zu Webservern, die exakt die gleichen Daten bereitstellen können.

Anwendungsbeispiel: Apache mit vier Anwendungsservern und Lastverteilung

In der Praxis ist der folgende Aufbau möglich. Ein Apache Server kommt als Load Balancer zum Einsatz und nimmt Anfragen von Benutzern entgegen. Direkt hinter dem Load Balancer befinden sich zwei normale Webserver mit Apache. Diese hosten die eigentliche Webseite mit gespiegeltem Inhalt. Je nach Auslastung entscheidet der Load Balancer nun, welchem Webserver die Anfrage eines Nutzers zugewiesen wird. Den zwei Apache HTTP Servern ist wiederum ein JBoss-Cluster nachgeschaltet. Dieser ist vor direkten Zugriffen von außen geschützt und kann nur von den Webservern angesprochen werden. Auch dieser Cluster besteht aus zwei Servern, die für Anwendungen bereitstehen. Wie bei den Webservern sind auch hier die Daten gespiegelt. Beide Server können jeweils von beiden HTTP-Servern angesprochen werden, sodass auch auf dieser Stufe jederzeit eine automatische Lastverteilung möglich ist. Auf der letzten Stufe befindet sich der Datenbankserver. Dieser beantwortet zum Beispiel Anfragen an SQL-Datenbanken und hostet alle Datenbanken, die für den Betrieb der Webseite benötigt werden.

Weitere Vorteile: Skalierung, Updates und Wartung

Die Vorteile für die Webseitenbetreiber zeigen sich vor allem bei der Administration. Updates und Änderungen an Webseiten zum Beispiel sind für Betreiber immer kritische und unbeliebte Momente. Bei Webseiten, die komplett auf einem Server gehostet werden, muss die Seite normalerweise offline genommen werden, um diese Arbeiten vorzunehmen. Apache besitzt einen Balancer Manager, über den der Status der angeschlossenen HTTP Webserver abgerufen werden kann. Hier ist es ebenfalls möglich, einzelne Webserver zu deaktivieren. Auf diese Weise sind Arbeiten an der Webseite möglich, ohne dass die Erreichbarkeit beeinflusst wird. Sie können also ein Update zunächst auf einem der beiden Webserver ausrollen, intern die Änderungen kontrollieren und dann über den Balancer Manager den aktiven Webserver wechseln. Danach rollen Sie das Update auf dem zweiten Webserver aus und aktivieren wieder beide über den Manager. Für Nutzer sind die Webseite und alle Anwendungen jederzeit erreichbar, ohne dass die Seite offline gesetzt wurde.

Der Load Balancer von Apache fängt auch unerwartete Ausfälle ab. Sollte einer der beiden Webserver oder Anwendungsserver im Betrieb ausfallen, beeinflusst dies nicht die Erreichbarkeit der Webseite. Alle Anfragen werden an den noch aktiven Server gerichtet. Der Balancer Manager informiert Sie jederzeit über den Zustand der HTTP Server, sodass Sie Probleme auf einen Blick erkennen. Dann haben Sie die Möglichkeit, gezielt darauf zu reagieren. So lassen sich mithilfe des Apache Servers und dem Load Balancer ausfallsichere Systeme erstellen.

Ebenfalls eine positive Eigenschaft des Load Balancing ist die effiziente Ausnutzung von Ressourcen. Systeme müssen nicht mehr für die maximale Auslastung, die nur selten zu Stoßzeiten auftritt, ausgelegt werden. Vielmehr erlaubt es das Load Balancing, bei Bedarf schnell und flexibel weitere Systeme zur Infrastruktur hinzuzufügen. Mit den Load Balancer ist es ebenfalls möglich, eine skalierbare Infrastruktur aufzubauen. Besonders schnell wachsende Webseiten mit großen Datenbanken und Anwendungen benötigen viel Rechenleistung. Anstelle permanent die Leistungsfähigkeit eines Systems im Auge zu behalten, werden einfach neue Systeme hinzugefügt, die als Web-, Anwendungs- oder Datenbankserver dienen.

Fazit

Insgesamt betrachtet sprechen viele einzelne Aspekte für den Apache HTTP Server und das Load Balancing. Im professionellen Webhosting kommt es vor allem auf Zuverlässigkeit, Performance und eine effiziente Infrastruktur sowie eine möglichst automatisierte Administration an. Alle diese Punkte erreichen Sie durch die Möglichkeiten, die der Load Balancer des Apache HTTP Servers bietet. Weiterhin sind die Skalierbarkeit und die Möglichkeit, den Cluster jederzeit erweitern zu können, starke Argumente für dieses System. Hinzu kommt, dass Apache plattformunabhängig und Open Source ist. Dank dieser Eigenschaften erfüllt der Apache HTTP Server mit Load Balancer alle Ansprüche des professionellen Webhosting.

Nach oben