Load Balancing
Systeme für Load Balancing dienen zur Lastverteilung von Netzwerkverkehr für Server. Dazu werden bereitgestellte Dienste, z. B. ein Webserver, auf mehrere Server verteilt. Das Ziel ist, die Last des Ansturms auf einen Dienst auf mehrere Server aufzuteilen und den Dienst bei einem Hardware-Ausfall vor dem Totalausfall zu schützen. Zusätzliche Rechenleistung durch Hardwareaufrüstung oder Neubeschaffung lässt sich ohne Probleme bei Bedarf hinzufügen.
Im Unterschied zu verteilten Rechnersystemen muss beim Load Balancing gewährleistet sein, dass der Anwender immer mit demselben Server in Verbindung bleibt. Z. B. bei per SSL-gesicherten Verbindungen oder mit Session-ID protokollierten Transaktionen, wie sie beim Online-Banking oder Online-Shopping verwendet werden.
Load Balancing Systeme gibt es als Hardware, aber auch als reine Software-Lösung. Welches Produkt geeignet ist kommt auf die Situation und die Anforderungen an. In der Regel handelt es sich bei einem Hareware-Load-Balancer um einen Layer-4 bis 7-Switch.
Die im folgenden beschriebenen Lastverteilungsverfahren werden von hochpreisigen Produkten unterstützt. Software-Lösungen unterstützen meist nur eines der Verfahren und sind auf den Einsatz eines einzigen Server-Betriebssystems angewiesen. Unterschiedliche Betriebssysteme, wie Windows und Linux, lassen sich nicht zusammenfassen und mit unterschiedlichen Aufgaben betrauen.
DNS-Variante
Das klassische Load Balancing ist das DNS selber. Dazu wird dem DNS-Server der eigenen Domain mehrere IP-Adressen eingetragen, unter der der Host-Name zu erreichen ist. Hinter jeder IP-Adresse befindet sich ein seperater und eigenständiger Server. Die Anfragen der Clients bedient der DNS-Server der Reihe nach mit den eingetragenen IP-Adressen. Dieses Verfahren ist sehr leicht einzurichten.
- DNS-Anfrage nach der IP-Adresse
- Auflösung der IP-Adresse und Antwort des DNS-Servers mit der IP-Adresse
- Verbindungsaufbau zum Server
Probleme wegen interaktiven Sitzungen und gesicherten Verbindungen sind Dank DNS gelöst. Die DNS-Anfrage durch den Client wird nur beim ersten Verbindungsaufbau gestellt. Weiß der Client die IP-Adresse kommuniziert er bei weiteren Anfragen mit dem Server immer mit dieser IP-Adresse. Der Zugriff auf einen anderen Server ist ausgeschlossen.
Eine richtige Lastverteilung findet nicht statt. Es werden nur bei der DNS-Anfrage die Clients gleichmäßig an die eingetragenen Server verteilt. Ob ein Client eine hohe Last verursacht und ob ein anderer Server gerade ohne Last läuft wird nicht festgestellt. Im ungünstigsten Fall läuft ein Server ständig unter Volllast, ein anderer Server im Leerlauf. Außerdem benötigt jeder Server eine eigene IP-Adresse, die im Internet erreichbar ist.
Round-Robin-Verfahren
Das Round-Robin-Verfahren kommt mit einer einzigen IP-Adresse aus. Anstatt des DNS-Servers übernimmt ein NAT-Proxy die Lastverteilung. Anstatt einer Liste mit den verfügbaren Servern leitet der Proxy alle Anfragen an die ihm bekannten Zielsysteme weiter. Dabei merkt er sich welche IP-Adresse mit welchem Server eine Verbindung hatte und leitet eine erneute Anfrage an diesen Server weiter.
Der Vorteil ist, dass nur eine IP-Adresse zum Internet hin benötigt wird und diese Variante nur einen geringen Administrationsaufwand erfordert. Unter anderem muss keine Liste mit Servern gepflegt werden. Allerdings handelt es sich hierbei ebenfalls um keine richtige Lastverteilung. Der Zustand einzelner Server wird nicht berücksichtigt.
NAT mit Feedback
Der Schritt zu echtem Load Balancing ist nur über den aktiven Austausch von Lastinformationen zwischen den Servern und dem Load Balancer möglich. Der NAT-Proxy ist schonmal die richtige Richtung. Bekommt er Informationen zur realen Auslastung der einzelnen Server kann er sich aus den Daten eine Rangliste erstellen, aus der er den nächsten Ziel-Server ermittelt.
Die Kommunikation zwischen Server und Load Balancer kann über serielle Leitungen, periodisch ablaufende Batchjobs oder SNMP-Abfragen erfolgen. Der Installations- und Konfigurationsaufwand wird dadurch aber höher. Der Vorteil dieses Verfahrens ist der Austausch zwischen Server und Load Balancer. Ist ein Server nicht mehr erreichbar entfernt der Load Balancer dessen IP-Adresse einfach aus seiner Liste. Läuft der Server wieder, wird die IP-Adresse wieder in der Liste hinzugefügt.
URL-basiertes Verfahren
Das URL-basierte Verfahren zur Lastverteilung ist speziell für HTTP- oder FTP-Server geeignet. Der Load Balancer entscheidet anhand der URL welcher Server für die Anfrage zuständig ist. Dazu werden die Verzeichnisse auf unterschiedlichen Rechnern abgelegt. Vorher muss aber eine Analyse des Datenverkehrs erfolgen, um festzustellen welche Bereiche mehr Rechenleistung und Bandbreite benötigen. Die Analyse muss während des Betriebs regelmäßig wiederholt werden, da sich das Nutzungsverhalten der Besucher ändern kann und die Lage der Verzeichnisse gegebenenfalls angepasst werden muss.
Da sich die Lastverteilung durch das gewünschte Zielverzeichnis ergibt, also eine Filterung des Datenstroms erfolgt, ist eine spezielle Hardware oder ein sehr schneller Computer notwendig. Die Beschaffung teurer oder spezieller Hardware ist meist unumgänglich.
Dieses Verfahren ist rein für Webauftritte, aber nicht für E-Mail-Server oder Dienste mit Transaktionen geeignet.
Dienst-basiertes Verfahren
Viele Server werden als eierlegende Wollmilchsau eingesetzt. Meist laufen mehrere Dienste, wie HTTP, FTP und E-Mail auf ein und dem selben Server. Unter Last erweist sich der Parallelbetrieb als Pferdefuß, wenn ein Dienst alle anderen Diensten Rechenleistung klaut.
Alle Dienste benutzen unter TCP einen eigenen Port, anhand dem ein Datenpaket einer Anwendung oder einem Dienst zugewiesen wird. Wenn man die Dienste auf unterschiedlichen und eigenständigen Servern betreibt, lässt sich die Last diensteabhängig verteilen. Vorher muss eine Analyse des Datenverkehrs stattfinden, um die Dienste mit hohem Verbrauch an Rechenleistung und Bandbreite herauszufinden. Dieses Verfahren ist einfach zu installieren, da die Server nur mit der Software installiert werden müssen, dessen Dienst sie anschließend bedienen. Das Routing übernimmt zum Beispiel ein NAT-Router mit konfiguriertem Port-Forwarding. Dazu wird im Router ein Port einer festen IP-Adresse zugewiesen.
Wann welches Verfahren?
Keine der beschriebenen Verfahren kommt in Reinform als Lösung vor. Meist wird eine Kombination aus zwei oder mehr Verfahren verwendet. Entweder verschachtelt oder ineinander integriert. Auf jeden Fall entsteht ein komplexes System, das ständig überwacht und an neue Anforderungen angepasst werden muss.
Da die Daten auf den einzelnen Servern immer synchron sein müssen, empfiehlt sich eine zentrale Speicherlösung für alle Server. Diese SAN-Systeme sind alles andere als billig und es gibt sie in verschiedenen Ausführungen für SCSI, Firewire, Gigabit Ethernet oder Fibre Channel.
Vor dem Einsatz eines Load Balancers sind die vorhandenen Programme und Anwendungen zu untersuchen. Schlecht programmierte Anwendungen und langsame Applikationen bringen auch einen Load Balancer an seine Grenzen. Eine umfangreiche Analyse des Datenstroms ist unbedingt notwendig.