Lastverteilung (Informatik)

aus Wikipedia, der freien Enzyklopädie
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“).

Serverlastverteilung[Bearbeiten]

Serverlastverteilung (en. 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 Datenverfügbarkeit durch SLB. Der Einsatz mehrerer Systeme ermöglicht redundante Datenhaltung. Die Aufgabe des SLB ist hier die Vermittlung der Clients an die einzelnen Server. Diese Technik wird unter anderem bei der Content Delivery Networks eingesetzt.

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.

DNS Round Robin[Bearbeiten]

Hierbei werden zu einem Hostnamen im Domain Name System mehrere IP-Adressen hinterlegt, die wechselseitig als Ergebnis von Anfragen zurückgeliefert werden. Es ist die einfachste Möglichkeit der Lastenverteilung. Für eine detaillierte Beschreibung siehe Lastverteilung per DNS.

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 diesen 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.

Anycast SLB[Bearbeiten]

Bei der Lastverteilung über Anycast wird eine ganze Gruppe von Rechnern über eine Adresse angesprochen. Es antwortet derjenige, der über die kürzeste Route erreichbar ist. Im Internet wird dieses mit BGP realisiert.

Der Vorteil diese Lösung ist die geographisch nahe Auswahl eines Servers mit entsprechender Verringerung der Latenz. Die Umsetzung erfordert allerdings den Betrieb eines eigenen Autonomen Systems im Internet.

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 clientbasierte Sessions verwendet werden. Entweder müssen dazu alle Verbindungen eines Clients über dessen IP auf den gleichen Server geleitet werden oder der Load Balancer muss fähig sein 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. Alternativ kann das Problem auch durch die Anwendung selbst gelöst werden (z.B. durch Speicherung der Session in einer Datenbank), so dass eine Anfrage auch von einem beliebigen Rechner des Server Pools beantwortet werden kann.[1]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

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