Server_Based_Load_Balancing

Der Begriff Serverlastverteilung oder englisch Server Load Balancing (SLB) beschreibt in der Netzwerktechnik Methoden zur Lastverteilung auf mehrere getrennte Server-Rechner im Netzwerk.

Einsatzgebiete

Server Load Balancing kommt überall dort zum Einsatz, wo sehr viele Clients eine hohe Anfragendichte erzeugen und damit einen einzelnen Server-Rechner überlasten würden. Typische Kriterien zur Ermittlung der Notwendigkeit von SLB sind die Datenrate, die Anzahl der Clients und die Anfragerate.

Ein weiterer Aspekt ist die Erhöhung der Datensicherheit durch SLB. Der Einsatz mehrerer Systeme ermöglicht redundante Datenhaltung. Die Aufgabe des SLB ist hier die Vermittlung der Clients an die einzelnen Server.

SLB kann auf verschiedenen Schichten des ISO-OSI-Referenzmodells eingesetzt werden. Man unterscheidet drei grundsätzlich verschiedene Ansätze:

DNS based SLB

DNS based SLB wird auf der Anwendungsschicht vorgenommen und basiert auf dem Domain Name System-Protokoll. Es ist die einfachste und kostengünstigste Variante, SLB zu implementieren, benötigt werden nur ein Router und ein Switch. Mehrere Szenarien sind möglich. Zum einen können mehrere homogene Server-Rechner mit unterschiedlichen Namen aufgebaut werden, auf die dann z.B. über einen Round-Robin-Algorithmus abwechselnd zugegriffen wird.

Beispiel:

Ein Client verbindet sich mit

www.xyz.com

Daraufhin ist eine Weiterleitung an die Rechner

www1.xyz.com
www2.xyz.com
www3.xyz.com

möglich.

Eine andere Methode des DNS based SLB ist in Lastverteilung per DNS beschrieben.

Round Robin

RoundRobin

Dns nutzt das Round Robin Verfahren um vom Client gestellte Anfragen auf verschiedene zb. DNS Server zu verteilen. Allerdings ohne zu den Status der Server zu prüfen.

NAT based SLB

Aufwendiger aber leistungsfähiger ist das so genannte NAT based SLB. Hier müssen zunächst zwei Netze aufgebaut werden: ein privates Netz, dem die Server angehören und ein öffentliches Netz, das über Router mit dem öffentlichen Internet verbunden ist. Zwischen diese beiden Netze wird ein Load Balancer geschaltet, also ein Router, der Anfragen aus dem öffentlichen Netz entgegennimmt, auswertet und daraufhin entscheidet, an welchen Rechner im privaten Netz er die Verbindung vermittelt. Diese Vermittlung geschieht auf der Netzwerkschicht des OSI-Referenzmodells. Zum Einsatz kommt hier die NAT-Technik: Der Load Balancer manipuliert eingehende und ausgehende IP-Pakete so, dass der Client den Eindruck hat, er kommuniziere stets mit ein und demselben Rechner, nämlich dem Load Balancer.

Problematisch ist bei diesem Verfahren, dass aller Verkehr über den Load Balancer fließt, dieser also früher oder später zum Engpass wird, sofern dieser zu klein oder nicht redundant ausgelegt wurde.

Als Vorteil ergeben sich aus dem NAT based SLB, dass die einzelnen Server durch den Loadbalancer zusätzlich geschützt werden. Zahlreiche Hersteller von Loadbalancer Lösungen bieten hierfür zusätzliche Sicherheitsmodule an, die Angriffe oder auch Fehlerhafte Anfragen schon vor erreichen der Servercluster ausfiltern können.

NAT mit Feedback

NAT-m-Fb.gif

Der Schritt zu echtem Load Balancing ist nur über den aktiven Austausch von Lastinformationen zwischen den Servern und dem Load Balancer möglich. Bekommt der NAT Proxy 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. Der Installations- und Konfigurationsaufwand wird dadurch aber höher. 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.

Flat based SLB

Bei diesem Verfahren bedarf es nur eines Netzes. Die Server und der Load Balancer müssen über einen Switch miteinander verbunden sein. Sendet der Client eine Anfrage (an den Load Balancer), wird das entsprechende Ethernet-Frame so manipuliert, dass es eine direkte Anfrage des Clients an einen der Server darstellt – der Load Balancer tauscht dazu seine eigene MAC-Adresse gegen die des zu vermittelnden Servers aus und sendet das Frame weiter. Die IP-Adresse bleibt unverändert. Man spricht bei diesem Vorgehen auch von MAT (MAC Address Translation). Der Server, der das Frame bekommen hat, sendet die Antwort direkt an die IP-Adresse des Absenders, also des Clients. Der Client hat damit den Eindruck, er kommuniziere nur mit einem einzigen Rechner, nämlich dem Load Balancer, während der Server tatsächlich nur mit einem Rechner, direkt mit dem Client, kommuniziert. Dieses Verfahren wird als DSR (Direct Server Return) bezeichnet.

Vorteil bei Flat based SLB ist die Entlastung des Load Balancers. Der (meist datenreichere) Rückverkehr findet auf direktem Wege statt.

Probleme der Praxis

Anwendungen wie Online-Shops verwalten Client-Anfragen oft über Sessions. Für bestehende Sessions wird z.B. der Inhalt des Warenkorbes gespeichert. Dies setzt aber voraus, dass ein Client, für den bereits eine Session eröffnet wurde, immer wieder mit dem gleichen Server kommuniziert, sofern hier Client basierte Sessions verwendet werden. Der Load Balancer muss also fähig sein, sogar auf der Anwendungsschicht des OSI-Referenzmodells zu agieren, also z.B. Cookies und Session IDs aus Paketen zu extrahieren und auszuwerten, um daraufhin eine Vermittlungsentscheidung zu treffen. Als Load Balancer werden in der Praxis daher Level 4-7-Switches eingesetzt. Dieses Problem kann aber durch entsprechende Ausrichtung der Software und Programmierung gelöst werden, so dass eine Anfrage auch von einem beliebigen Rechner des Server Pools beantwortet werden