Studienprojekte

PROJEKT

Squirrel - A Load Balancer for Web Servers

FAKTEN

Zeitraum

SS 2007

Status

fertiggestellt

FH-Studierende

Bettina Hahn, Nadja Kickinger, Tobias Viktorin, Philipp Wiesuer

FH-Betreuer

DI Robert Kolmhofer

Kurzbeschreibung

Große Webportale und Online-Shops wie Amazon.com können nicht mehr von einzelnen Webservern gehostet werden. Weiters müssen diese Seiten ohne Unterbrechungen erreichbar sein. Diesen Anforderungen werden hochverfügbare Lösungen mittels Loadbalancern, Webservern und einer Zentralen Storagelösung gerecht. Squirrel implementiert eine solche hochverfügbare Loadbalancing-Lösung auf Open Source Basis. Dazu werden zwei redundante Loadbalancer, welche die Anfragen von Clients auf drei Webserver aufteilen und zwei redundante Fileserver als hochverfügbare, zentrale Storagelösung realisiert.

DETAILS

Ausgangssituation / Motivation / Einleitung

Wenn eine Webseite oder ein Portal zu umfangreich wird, um von einem einzelnen Webserver gehostet zu werden, greift man häufig auf Loadbalancing-Lösungen zurück: Diese Appliances verteilen die durch surfende Clients aufkommende Last möglichst effektiv über mehrere verfügbare Webserver. Durch den Einsatz von Loadbalancern ist es möglich, mehrere Webserver in einem Verbund zu betreiben. Damit können mehr User bei gleichzeitig niedrigerer Antwortzeit bedient werden. Da Loadbalancer einen "single point of failure" darstellen können, werden sie meist redundant ausgelegt. Dadurch wird ein unterbrechungsfreier Betrieb sowohl bei Ausfall eines Loadbalancers als auch bei dem eines Webserver gewährleistet.

Projektziel

Ziel des Projektes ist es, eine solche hochverfügbare Loadbalancing-Lösung mittels Open Source Software zu realisieren. Weiters sollte neben den redundanten Loadbalancern und den Webservern auch ein zentrales Storage zur Verfügung stehen, welches wiederum ausfallsicher gestaltet sein soll. Durch das zentrale Storage ist es möglich, allen Webservern konsistente Daten über Netzwerkfreigaben zur Verfügung zu stellen. Weiters sollte getestet werden, wie die Lösung mit unterschiedlichen Loadbalancingstrategien performt.

Umsetzung

Der erste Schritt bestand darin, sämtliche Tools und Software, die für die Umsetzung des Projekts nötig sind, zu recherchieren und zu evaluieren. Sobald dies abgeschlossen war, wurde das Gesamtsystem mit einem Loadbalancer, den drei Webserver sowie einem Fileserver aufgesetzt. Loadbalancer und Fileserver wurden zunächst so konfiguriert, dass sie ihre vorgesehne Aufgabe ohne Redundanz erfüllen. Erst als diese fertig konfiguriert waren, wurden Loadbalancer und Fileserver redundant ausgelegt. Die Loadbalancer wurden mit den Tools IPVS sowie Ldirector implementiert, die Redundanz wurde mit Heartbeat erreicht. Auf den Webservern kam ein Apache2 mit PHP und MySQL-Modulen zum einsatz. Die für die Webseiten benötigten Daten wurden mittels NFS in das lokale Dateisystem eingebunden - die Daten selbst lagen auf den redundanten Fileservern. Die Netzwerkfreigaben der Fileserver wurden mit DRBD auf Blockebene gespiegelt, die Ausfallsicherheit wurde wieder mit Heartbeat realisiert. Um das Gesamtsystem zu Testen wurden die Benchmarks SpecWEB2005 sowie JMeter in Verbdindung mit BadBoy verwendet. Mit Hilfe der Tools wurden auch verschiedene Loadbalancingstrategien auf ihre Effektivität hin getestet.