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.


