Lastverteilung (Informatik)

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Server Load Balancing)
Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.

Mittels Lastverteilung (englisch Load Balancing) werden in der Informatik umfangreiche Berechnungen oder große Mengen von Anfragen auf mehrere parallel arbeitende Systeme verteilt. Dies kann sehr unterschiedliche Ausprägungen haben. Eine einfache Lastverteilung findet zum Beispiel auf Rechnern mit mehreren Prozessoren statt. Jeder Prozess kann auf einem eigenen Prozessor ausgeführt werden. Die Art der Verteilung der Prozesse auf Prozessoren kann dabei einen großen Einfluss auf die Gesamtperformance des Systems haben, da z. B. der Cache-Inhalt lokal für jeden Prozessor ist.

Ein anderes Verfahren findet man bei Computerclustern bzw. Servern. Hierbei bilden mehrere Rechner einen Verbund, der sich nach außen meistens wie ein einzelnes System verhält. Einige mögliche Verfahren sind das Vorschalten eines Systems (Load Balancer, Frontend Server), der die Anfragen aufteilt, oder die Verwendung von DNS mit dem Round-Robin-Verfahren. Insbesondere bei Webservern ist eine Serverlastverteilung wichtig, da ein einzelner Host nur eine begrenzte Menge an HTTP-Anfragen auf einmal beantworten kann. Der dabei vorgeschaltete Load Balancer fügt der HTTP-Anfrage zusätzliche Informationen dazu, um Anfragen desselben Benutzers an denselben Server zu schicken. Dies ist auch bei der Nutzung von SSL zur Verschlüsselung der Kommunikation wichtig, damit nicht für jede Anfrage ein neuer SSL-Handshake durchgeführt werden muss.

Lastverteilung wird ebenfalls bei Daten-/Sprachleitungen verwendet, um den Verkehrsfluss auf parallel geführte Leitungen zu verteilen. In der Praxis treten jedoch häufig Probleme dabei auf, den Daten-/Sprachverkehr gleichmäßig auf beide Leitungen zu verteilen. Es wird daher meist die Lösung implementiert, dass eine Leitung als Hin- und die zweite Leitung als Rückkanal Verwendung findet.

Load Balancing geht oft einher mit Mechanismen zur Ausfallsicherheit: Durch den Aufbau eines Clusters mit entsprechender Kapazität und der Verteilung der Anfragen auf einzelne Systeme, erreicht man eine Erhöhung der Ausfallsicherheit, sofern der Ausfall eines Systems erkannt und die Anfragen automatisch an ein anderes System abgegeben werden (siehe auch: Hochverfügbarkeit bzw. High-Availability, „HA“).

In der Informationsverarbeitung kann die Last der zu speichernden Entitäten durch Serverlastverteilung-Software auf unterschiedliche Speichercluster verteilt werden. Kriterien für die Lastverteilung sind hier Zugriffsgeschwindigkeit und Übersichtlichkeit.

Inhaltsverzeichnis

Serverlastverteilung [Bearbeiten]

Einsatzgebiete [Bearbeiten]

Server Load Balancing (SLB) 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 [Bearbeiten]

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 [Bearbeiten]

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 Content-Switch 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 der gesamte 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 Load Balancer zusätzlich geschützt werden. Zahlreiche Hersteller von Load Balancer-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 Load Balancer ü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 [Bearbeiten]

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 [Bearbeiten]

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 demselben 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. Das Weiterleiten einer Session auf immer den gleichen Backendserver wird als „Affinität“ bezeichnet. 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 (z.B. durch Speicherung der Session in einer Datenbank oder in einem eigens dafür vorgesehenen Memcached-Server), so dass eine Anfrage auch von einem beliebigen Rechner des Server Pools beantwortet werden kann.[1]

Content Switching [Bearbeiten]

Content Switching ist eine Weiterentwicklung der Lastverteilung von Webservern.

Im Laufe der Jahre wurden die Anforderungen an die Computerhardware bei Webservern immer größer. Schon bald reichte es nicht mehr aus, für große Websites nur einen einzelnen Server vorzuhalten; vielmehr ließe sich die Vielzahl der Anfragen an den Servern nur noch sicherstellen, indem die Anfragelast auf mehrere Computer (Serverfarm) verteilt wurde (Lastverteilung). Für diese Verteilung war einer der Computer in der Farm (der Lastverteiler, load balancer) zuständig.

Doch es dauerte nicht lange, und auch diese Technik stieß an ihre Grenzen. Die Serverfarmen wurden immer größer. Die aktuelle (2004) Technik ist allgemein als Mega-Proxy bekannt, und bei dieser Größe reicht ein Lastverteiler zur Verteilung der Anfragen auf die einzelnen Rechner nicht mehr aus.

Die Idee war es nun, bereits den Router/Switch, über den die Datenströme an die Webserverfarm übertragen werden, die Verteilung der Daten auf den jeweils am wenigsten belasteten Server vornehmen zu lassen.

Das Problem dabei ist, die Daten von den verschiedenen Servern der Serverfarm, die ja jeder für sich eine andere, eigene IP-Adresse haben, wieder dem richtigen Benutzer der Webseite zuzuordnen und auch noch dafür zu sorgen, dass evtl. verwendete HTTP-Cookies dieser Website konsistent bleiben. Dazu werden Content-Switches mit einer „intelligenten“ Technik ausgerüstet, die in der Lage ist, auf der Basis von URL-Informationen, Dateiextensionen, Headern und Cookies die korrekte Zuordnung aufrechtzuerhalten.

Weblinks [Bearbeiten]

Einzelnachweise [Bearbeiten]

  1. Shared Session Management Abgerufen am 3. Juni 2011.