- Loadbalancer
-
Der Begriff Serverlastverteilung oder englisch Server Load Balancing (SLB) beschreibt in der Netzwerktechnik Methoden zur Lastverteilung auf mehrere getrennte Server-Rechner im Netzwerk.
Inhaltsverzeichnis
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.
Zum Einsatz kommt SLB bei großen Portalen wie etwa Wikipedia, Marktplätzen oder Online-Shops. Prinzipiell bemerkt der Anwender nicht, ob auf der Gegenseite SLB eingesetzt wird. Siehe auch Redirect (Weiterleitung).
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
example.com
Daraufhin ist eine Weiterleitung an die Hostnamen
mirror1.example.com mirror2.example.com mirror3.example.com
möglich.
Eine andere Methode des DNS based SLB ist in Lastverteilung per DNS beschrieben.
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. Dies geschieht auf der Vermittlungsschicht 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. Die Server im privaten Netz haben sozusagen alle die gleiche virtuelle IP-Adresse.
Problematisch ist bei diesem Verfahren, dass aller Verkehr über den Loadbalancer 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. Auch die Terminierung von SSL-Sessions und somit die Entlastung der Servercluster bei HTTP-Farmen ist ein nicht zu unterschätzender Vorteil beim Server Based Loadbalancing.
Neben aktiven Healthchecks, wie sie bei den anderen Verfahren notwendig sind, sind seit einiger Zeit bei großen Web-Clustern zunehmend passive Healthchecks im Einsatz. Hier wird der ein- und ausgehende Datenverkehr durch den Loadbalancer überwacht, sobald ein Rechner im Servercluster eine Zeitüberschreitung bei der Beantwortung einer Anfrage auslöst, kann hierdurch dieselbe Anfrage an einen anderen Cluster-Server gestellt werden, ohne dass dies beim Client bemerkt wird.
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 der 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 den Frame weiter. Die IP-Adresse bleibt unverändert. Man spricht bei diesem Vorgehen auch von MAT (MAC Address Translation). Der Server, der den 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 Layer 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 kann.
Weblinks
Wikimedia Foundation.