Netzwerk-Konzeption: Konzepte für hochverfügbare Webserver bedienen sich oft Server-Farmen und Load Balancing, der rationalen Lastverteilung.
Bei der IT-Netzwerkkonzeption bürgt neben der redundanten Auslegung von Serverkomponenten die Redundanz von Servern für Leistungsfähigkeit und Ausfallsicherheit. Die Bereitstellung eines zweiten Servers, der nur beim Ausfall des laufenden Systems zum Einsatz kommt, ist nicht mehr State of the Art. Eine solche „Cold-Standby“-Lösung ist nicht gut skalierbar und gewährleistet nicht den unterbrechungsfreien Betrieb. Durch die Verteilung der Last auf mehrere Rechner erreicht man neben erhöhter Ausfallsicherheit auch verbesserte Antwortzeiten. Doch neben den eigentlichen Servern muss man auch die übrige Infrastruktur entsprechend planen. Als grundlegende Webserver-Konzepte stehen hier Server-Farmen und Load Balancing zur Verfügung.
Server-Farm
Eine Server-Farm besteht aus zwei oder mehreren Servern, welche die gleiche Dienste-Art zur Verfügung stellen und mit gespiegelten Datenbeständen arbeiten. „Dienste“ sind – auf das Internet bezogen – alle Anwendungen, die auf dem Standard-Protokoll TCP/IP basieren. Anders als beim Clustering, bei dem mehrere Server gemeinsam eine Aufgabe bearbeiten, ist in einer Server-Farm jeder Server eigenständig für eine Aufgabe zuständig.
Für höhere Verfügbarkeit und Antwortzeiten sollten die Server auf mehrere Standorte verteilt sein. Dies verhindert einen Totalausfall bei Brand, Wassereinbruch und Leitungsausfall der Netzanbindung. Stehen alle Server im selben Gebäude, sollten sie zumindest in unterschiedlichen Brandabschnitten bzw. Etagen des Rechenzentrums aufgestellt sein. Eine weitere wichtige Maßnahme ist eine redundante, zweite Backbone-Leitung. Eine Server-Farm macht aber nur dann Sinn, wenn die Benutzeranfragen auf die einzelnen Server verteilt werden:
Load Balancing
Hierfür werden Lastverteiler (Load-Balancer) eingesetzt, die sowohl Verfügbarkeit wie auch Auslastung eines Servers oder Dienstes berücksichtigen. Fällt ein Server aus oder ist er überlastet, leitet der Load-Balancer Anfragen auf einen verfügbaren Server in der Server-Farm weiter. Im Idealfall wählt der Load-Balancer dafür den Server mit der geringsten Last aus.
Load Balancing-Kriterien:
- Least Connections
- Weighting
- System Load
- Round Trip Time
- Round Robin
Die Verteilung der Anfragen auf die Server erfolgt nach unterschiedlichen Algorithmen. Die gängigsten entscheiden nach der geringsten Anzahl bestehender Verbindungen (Least Connections), frei definierbarer Gewichtung (Weighting), Systemauslastung (System Load) und Antwortzeit (Round Trip Time), oder sie verteilen die Anfragen reihum (Round Robin).
Wie funktioniert Round-Robin?
Beim Round-Robin-Verfahren verteilen Load-Balancer die Anfragen jeweils an den nächsten Server in der Liste. Ein Spezialfall ist das Round-Robin-DNS: dabei ordnet man im Domain Name Service (DNS) einem Hostnamen wie www.mysite.de die IP-Adressen aller Server der Server-Farm zu. Der DNS verteilt danach Anfragen der Reihe nach auf die einzelnen Server. Beispiel: Eine Server-Farm besteht aus den zwei Webservern www1.lastverteiler.de (IP 131.1.2.240) und www2.lastverteiler.de (IP 131.1.2.241). Im DNS wird ein Eintrag für www.lastverteiler.de (IP 131.1.2.254) eingerichtet, der der virtuellen Adresse des Load-Balancers entspricht. Unten findet sich dazu eine schematische Darstellung (Abbildung 2).
Der entscheidende Nachteil von Round-Robin-Verfahren ist jedoch, dass es weder den Ausfall eines Servers erkennt, noch deren Auslastung berücksichtigt. Ein Benutzer kann somit auf einen Server gelenkt werden, der nicht mehr verfügbar oder so stark ausgelastet ist, dass er keine Antwort mehr liefert. Und das einzige Gemeinsame von Web-Anfragen ist deren Vielfältigkeit: Ein Surfer, der einen längeren Artikel online liest, belastet den Server so gut wie gar nicht, ein Download oder ein umfangreiches Script hingegen sehr stark. Es kommt also weniger auf die Anzahl der Verbindungen an, die ein Server bearbeitet, als auf dessen Gesamtauslastung. In neuen Load-Balancern werden deshalb Agenten auf den Zielservern eingesetzt, um ständig wichtige Daten wie CPU-Belastung, freien Arbeitsspeicher und ähnliches an den Load-Balancer zu melden. Je nach Last bekommt der Server mehr oder weniger Anfragen.
Redundanz der Load-Balancer
Für höhere Verfügbarkeit können nahezu alle Load-Balancer redundant ausgelegt werden. Hierzu werden meist zwei Load-Balancer durch ein Kabel miteinander verbunden, über das sie den Status und die Konfiguration des Partners ermitteln. Fällt ein Load-Balancer aus, so übernimmt der Failover-Partner die bestehenden Verbindungen des ausgefallenen Load-Balancers. Mit Failover wird das Element eines Netzwerks (ob Kabel oder Server) bezeichnet, das im Falle des Versagens des Systems einspringt. Failover-Load-Balancer, redundante Load-Balancer-Komponenten, arbeiten entweder aktiv/passiv (Cisco LocalDirector) oder aktiv/aktiv (Alteon Websystems ACEdirector). Im ersten Fall wird der Failover-Partner erst dann aktiv, wenn der aktive, primäre Load-Balancer ausfällt. Der Failover-Partner ist also stille, passive Reserve. Im aktiv/aktiv Fall sind beide Load-Balancer aktiv, was eine zusätzliche Lastverteilung zwischen den Load-Balancern ermöglicht.
Load Balancing der Standorte
Manche Lastverteiler bieten außerdem die Möglichkeit, Client-Anfragen auf verschiedene Standorte zu verteilen. Zum einen wird hierdurch die Verfügbarkeit von Server-Diensten bei Ausfall eines ganzen Standorts erhöht. Zum anderen können Client-Anfragen an den nächstgelegenen Standort gelenkt werden. Dadurch lassen sich die Verzögerungen zwischen Anfragen und Antworten reduzieren. Hierzu wird den Load-Balancern an den unterschiedlichen Standorten der gleiche Hostname im DNS zugeordnet. Jeder standortspezifische Load-Balancer hat seine eigene IP-Adresse. Die Load-Balancer der unterschiedlichen Standorte kommunizieren miteinander, um so einem Client den für ihn optimalen Server zuzuordnen. Abbildung 3 verdeutlicht: Verteilt man die Server über mehrere Standorte, leiten die Load-Balancer Anfragen an den Server weiter, der vom Client am besten zu erreichen ist.
Prinzipiell kann man bei Lastverteilern zwischen Hardware- und Software-Lösungen unterscheiden: Hardware-Lösungen sind entweder dedizierte Geräte (Router, Bridges), meist mit einem Unix-Derivat als Betriebssystem, oder in bestehende Netzwerkkomponenten wie Switches integriert. Entsprechende Software kann quasi als Bausatz einen herkömmlichen Unix/Linux-Rechner zum Load-Balancer aufrüsten oder direkt auf den betroffenen Servern laufen. Hardware-basierte Lastverteiler sind in der Regel performanter, bieten mehr Funktionen als reine Software-Lösungen und sind besser skalierbar. Dagegen haben Software-Lösungen, die direkt auf den Endgeräten laufen, den Vorteil, die Auslastung der Server besser bestimmen zu können. Einige Hardware-Hersteller bieten jedoch mittlerweile auch Software an, die auf den Servern installiert wird, dort die Systemauslastung ständig überwacht und die Ergebnisse regelmäßig an die Load-Balancing-Komponente sendet.
Zusammenfassung Load-Balancing und Server-Farmen
Load-Balancing = Lastverteilung. Verteilt einzelne Aufgaben wie Rechenjobs oder Client-Anfragen auf die Knoten (Rechner) eines Netzes in Abhängigkeit von ihrer Auslastung und Verfügbarkeit.
Server-Farmen bestehen aus mehreren Rechnern, die sich eine gemeinsame Aufgabe teilen; anders als bei einem typischen Cluster arbeitet dabei jeder Rechner mit seinem eigenen, lokalen Datenbestand, der nur bei Bedarf gespiegelt wird.