www.wikidata.de-de.nina.az
Mittels Lastverteilung englisch Load Balancing werden in der Informatik umfangreiche Berechnungen oder grosse Mengen von Anfragen auf mehrere parallel arbeitende Systeme verteilt mit dem Ziel ihre gesamte Verarbeitung effizienter zu gestalten Diagramm zur Veranschaulichung der Benutzeranforderungen an ein Elasticsearch Cluster das durch einen Load Balancer verteilt wird Beispiel fur Wikipedia Sind die einzelnen Prozesse weitgehend unabhangig voneinander so bietet sich die Architekturform des Computerclusters an bei dem die Prozesse auf eine gewisse Anzahl gleichartiger Server Serverfarm verteilt werden Haufig findet man diesen Ansatz bei grosseren Web Anwendungen mit vielen Benutzern Handelt es sich dagegen um einen einzigen sehr aufwandigen Prozess kann versucht werden die Aufgabe zu splitten und abschliessend die Ergebnisse zusammenzufuhren wie beispielsweise bei der Saldenbildung uber eine sehr grosse Anzahl von Buchungen Fur solche Aufgabenstellungen eignen sich Server mit vielen Prozessorkernen besonders gut Multicore Architektur mit gemeinsam genutztem Arbeitsspeicher Multicore Architekturen eignen sich auch gut fur typische Mischlasten auf einem kleineren Anwendungsserver wo beispielsweise Betriebssystem Datenbank Applikation und Webserver eine Fulle unterschiedlicher und meist kurz laufender Threads hervorbringen Diese Lasten werden vom Scheduler des Systems auf die verfugbaren Kerne verteilt Der Scheduler hat keine Kenntnis uber die Komplexitat der anstehenden Aufgaben sondern entscheidet aufgrund von Prozess Prioritat Auslastung und anderen Kenngrossen Lastverteilung ist ursprunglich das Ergebnis der Forschung im Bereich der Parallelrechner Zwei Hauptansatze existieren nebeneinander statische Algorithmen die den Zustand der verschiedenen Maschinen nicht berucksichtigen und dynamische Algorithmen die ofters allgemeiner und effizienter sind aber dafur einen anspruchsvollen Informationsaustausch zwischen den verschiedenen Recheneinheiten erfordern was der Effizienz schaden kann Inhaltsverzeichnis 1 Problemubersicht 1 1 Art der Jobs 1 1 1 Grosse 1 1 2 Abhangigkeit 1 1 3 Spaltbarkeit 1 2 Statische und Dynamische Algorithmen 1 2 1 Statische Algorithmen 1 2 2 Dynamische Algorithmen 1 3 Hardware Architektur 1 3 1 Heterogene Maschinen 1 3 2 Gemeinsamer und verteilter Speicher 1 3 3 Hierarchie 1 3 4 Skalierbarkeit 1 4 Fehlertoleranz 2 Ansatze 2 1 Statische Lastverteilung mit vollstandigem Bekenntnis der Jobs Prefix Summe Algorithmus 2 2 Statische Lastverteilung ohne Vorkenntnisse 2 2 1 Round Robin 2 2 2 Randomisierte Zuweisung 2 3 Master Worker 2 4 Verteilte Architektur ohne Vorkenntnisse der Arbeitsdiebstahl 2 4 1 Vorfahren 2 4 2 Effizienz 3 Anwendungsbeispiele 3 1 Serverlastverteilung 3 1 1 DNS Round Robin 3 1 2 NAT based SLB 3 1 3 Flat based SLB 3 1 4 Anycast SLB 3 1 5 Probleme der Praxis 4 Literatur 5 Einzelnachweise 6 WeblinksProblemubersicht BearbeitenEin Lastverteilungsalgorithmus versucht immer ein bestimmtes Problem zu losen Unter anderen sollen die Art der zu losenden Aufgaben die algorithmische Komplexitat die Hardware Architektur sowie die Fehlertoleranz berucksichtigt werden Daher muss ein Kompromiss gefunden werden um die anwendungsspezifischen Anforderungen bestmoglich zu erfullen Art der Jobs Bearbeiten Die Effizienz von Lastverteilungsalgorithmen hangt entscheidend von der Art der Jobs ab Je mehr Informationen uber die Aufgaben zum Zeitpunkt der Entscheidungsfindung verfugbar sind desto grosser ist daher das Optimierungspotenzial Grosse Bearbeiten Eine perfekte Kenntnis der Ausfuhrungszeit jeder der Aufgaben erlaubt es eine optimale Lastverteilung zu erreichen siehe den Prafixsumme Algorithmus unten 1 Leider handelt es sich hierbei tatsachlich um einen idealisierten Fall Die genaue Kenntnis der Ausfuhrungszeit jeder Aufgabe ist eine extrem seltene Situation Aus diesem Grund gibt es verschiedene Techniken um sich eine Vorstellung von den verschiedenen Ausfuhrungszeiten zu machen Zunachst einmal kann man in dem glucklichen Fall dass es sich um Aufgaben von relativ homogener Grosse handelt davon ausgehen dass jede von ihnen ungefahr die durchschnittliche Ausfuhrungszeit erfordert Wenn die Ausfuhrungszeit hingegen sehr unregelmassig ist mussen subtilere Techniken verwendet werden Eine Technik ist das Hinzufugen einiger Metadaten zu jeder Aufgabe Abhangig von der bisherigen Ausfuhrungszeit fur ahnliche Metadaten konnen auf der Grundlage von Statistiken Ruckschlusse fur eine zukunftige Aufgabe gezogen werden 2 Schliesslich kann die Anzahl der Aufgaben selbst von einiger Bedeutung sein Abhangigkeit Bearbeiten In einigen Fallen hangen die Aufgaben voneinander ab Diese gegenseitigen Abhangigkeitsrelationen konnen durch eine azyklisch orientierten Grafen englisch Directed acyclic graph veranschaulicht werden Intuitiv konnen einige Aufgaben erst beginnen wenn andere bereits abgeschlossen sind Unter der Annahme dass die erforderliche Zeit fur jede der Aufgaben im Voraus bekannt ist muss eine optimale Ausfuhrungsreihenfolge zur Minimierung der Gesamtausfuhrungszeit fuhren Obwohl dies ein NP schweres Problem ist und daher schwer genau zu losen sein kann gibt es Scheduling Algorithmen die ehrenhafte Aufgabenverteilungen erzeugen Spaltbarkeit Bearbeiten Ein weiteres Merkmal der Jobs das einen grossen Einfluss auf das Design des Lastverteilungsalgorithmus hat ist ihre Fahigkeit wahrend der Ausfuhrung in Teilaufgaben aufgeteilt zu werden Der Work Stealing Algorithmus den wir spater vorstellen werden nutzt diese Besonderheit Statische und Dynamische Algorithmen Bearbeiten Statische Algorithmen Bearbeiten Ein Lastverteilungsalgorithmus wird als statisch bezeichnet wenn er den Zustand des Systems bei der Aufgabenverteilung nicht berucksichtigt Unter Systemzustand verstehen wir hier die Auslastung und manchmal sogar Uberlastung bestimmter Prozessoren Stattdessen werden im Vorfeld Annahmen uber das Gesamtsystem getroffen wie z B die Ankunftszeiten und der Ressourcenbedarf der eingehenden Aufgaben Daruber hinaus sind die Anzahl der Prozessoren ihre jeweilige Leistung und Kommunikationsgeschwindigkeit bekannt Es geht also darum Aufgaben mit den Prozessoren so zu verbinden dass eine bestimmte Leistungsfunktion minimiert wird Der Trick liegt in der Gestaltung dieser Leistungsfunktion Die Techniken sind immer um einen Router herum zentralisiert der die Lasten verteilt und die Optimierung der Funktion gewahrleistet Diese Minimierung kann Informationen in Bezug auf die zu verteilenden Aufgaben berucksichtigen und eine erwartete Ausfuhrungszeit ableiten Der Vorteil von statischen Algorithmen ist dass sie leicht zu implementieren und bei relativ regelmassigen Aufgaben wie der Verarbeitung von HTTP Anfragen einer Website ausserst effizient sind Es gibt jedoch immer noch statistische Varianz in der Aufgabenverteilung die zu einer Uberlastung einiger Recheneinheiten fuhren kann Dynamische Algorithmen Bearbeiten Im Gegensatz zu statischen Lastverteilungsalgorithmen berucksichtigen dynamische Algorithmen die aktuelle Last jeder der Recheneinheiten auch Knoten genannt im System Bei diesem Ansatz konnen Aufgaben dynamisch von einem uberlasteten Knoten zu einem unterlasteten Knoten verschoben werden um eine schnellere Verarbeitung zu erhalten Obwohl diese Algorithmen viel komplizierter zu entwerfen sind konnen sie hervorragende Ergebnisse liefern insbesondere wenn die Ausfuhrungszeit von einer Aufgabe zur anderen stark variiert Beim dynamischen Lastverteilung kann die Architektur modularer sein da es nicht zwingend erforderlich ist einen speziellen Knoten fur die Arbeitsverteilung zu haben Wenn Aufgaben einem Prozessor entsprechend seinem Zustand zu einem bestimmten Zeitpunkt eindeutig zugeordnet werden sprechen wir von einer eindeutigen Zuordnung Wenn andererseits die Aufgaben entsprechend dem Zustand des Systems und seiner Entwicklung permanent neu verteilt werden konnen spricht man von dynamischer Zuweisung Offensichtlich ist ein Lastverteilungsalgorithmus der zu viel Kommunikation erfordert um seine Entscheidungen zu treffen nicht wunschenswert auf die Gefahr hin die Losung des Gesamtproblems zu verlangsamen Der schlimmste Fall ist ein Ping Pong Spiel zwischen den Prozessoren das zu einer unbegrenzten Blockierung der Losung fuhrt 3 Hardware Architektur Bearbeiten Heterogene Maschinen Bearbeiten Parallele Rechner Infrastrukturen bestehen oft aus Einheiten unterschiedlicher Rechenleistung die bei der Lastverteilung berucksichtigt werden sollten Beispielsweise konnen Einheiten mit geringerer Leistung Anfragen erhalten die einen geringeren Berechnungsaufwand erfordern oder im Falle homogener oder unbekannter Anfragegrossen weniger Anfragen erhalten als grossere Einheiten Gemeinsamer und verteilter Speicher Bearbeiten Parallelrechner werden oft in zwei grosse Kategorien unterteilt solche bei denen sich alle Prozessoren einen einzigen gemeinsamen Speicher teilen auf dem sie parallel lesen und schreiben PRAM Modell und solche bei denen jede Recheneinheit uber einen eigenen Speicher verfugt Modell des verteilten Speichers und Informationen durch Nachrichten mit den anderen Einheiten austauscht Bei Computern mit gemeinsamem Speicher verlangsamt die Verwaltung von Schreibkonflikten die individuelle Ausfuhrungsgeschwindigkeit jeder einzelnen Recheneinheit erheblich Sie konnen jedoch gut parallel arbeiten Umgekehrt kann beim Nachrichtenaustausch jeder der Prozessoren mit voller Geschwindigkeit arbeiten Andererseits sind beim Nachrichtenaustausch alle Prozessoren gezwungen auf den Beginn der Kommunikationsphase durch die langsamsten Prozessoren zu warten In der Realitat fallen nur wenige Systeme in genau eine der Kategorien Im Allgemeinen verfugen die Prozessoren jeweils uber einen internen Speicher um die fur die nachsten Berechnungen benotigten Daten zu speichern und sind in aufeinanderfolgenden Clustern organisiert Haufig werden diese Verarbeitungselemente dann durch verteilten Speicher und Nachrichtenaustausch koordiniert Daher sollte der Lastverteilungsalgorithmus eindeutig an eine parallele Architektur angepasst werden Andernfalls besteht die Gefahr dass die Effizienz der parallelen Problemlosung stark beeintrachtigt wird Hierarchie Bearbeiten Zur Anpassung an den oben dargestellten Hardware Strukturen gibt es zwei Hauptkategorien von Lastverteilungsalgorithmen Einerseits werden die Aufgaben von einem Master zugewiesen und von Arbeitern ausgefuhrt Master Slave Modell die den Master uber die Entwicklung ihrer Arbeit auf dem Laufenden halten Der Master kann dann fur die Zuweisung und Neuzuweisung der Arbeitslast verantwortlich sein wenn der Algorithmus dynamisch mit dynamischer Zuweisung ist Die Literatur spricht von der Meister Arbeiter Architektur Umgekehrt kann die Steuerung auf die verschiedenen Knoten verteilt werden Der Lastverteilungsalgorithmus wird dann auf jedem von ihnen ausgefuhrt und die Verantwortung fur die Zuweisung von Jobs sowie gegebenenfalls fur die Neuzuweisung und Aufteilung wird geteilt Die letztere Kategorie setzt einen dynamischen Lastverteilungsalgorithmus voraus Auch hier gilt Da das Design jedes Lastverteilungsalgorithmus einzigartig ist muss die vorherige Unterscheidung eingeschrankt werden So ist auch eine Zwischenstrategie moglich z B mit Master Knoten fur jeden Sub Cluster die ihrerseits einem globalen Master unterliegen Es gibt auch Organisationen mit mehreren Ebenen mit einem Wechsel zwischen Master Slave und verteilten Kontrollstrategien Letztere Strategien werden schnell komplex und sind selten anzutreffen Entwickler bevorzugen leichter kontrollierbare Algorithmen Skalierbarkeit Bearbeiten Im Rahmen von Algorithmen die sehr langfristig laufen Server Cloud entwickelt sich die Computerarchitektur im Laufe der Zeit weiter Es ist jedoch vorzuziehen nicht jedes Mal einen neuen Algorithmus entwerfen zu mussen Ein weiterer wichtiger Parameter eines Lastverteilungsalgorithmus ist daher seine Fahigkeit sich an eine sich entwickelnde Hardware Architektur anzupassen Das nennt man die Skalierbarkeit des Algorithmus Ein Algorithmus soll auch fur einen Eingabeparameter skalierbar sein wenn seine Leistung relativ unabhangig von der Grosse dieses Parameters bleibt Wenn der Algorithmus in der Lage ist sich an eine unterschiedliche Anzahl von Prozessoren anzupassen die Anzahl der Prozessoren jedoch vor der Ausfuhrung festgelegt werden muss wird er als formbar englisch moldable bezeichnet Wenn der Algorithmus andererseits in der Lage ist mit einer schwankenden Anzahl von Prozessoren wahrend seiner Ausfuhrung umzugehen gilt der Algorithmus als schmiedbar englisch malleable Die meisten Lastverteilungsalgorithmen sind zumindest formbar 4 Fehlertoleranz Bearbeiten Insbesondere in grossen Rechnerverbunden ist es nicht tolerierbar einen parallelen Algorithmus auszufuhren der dem Ausfall einer einzelnen Komponente nicht standhalten kann Daher werden fehlertolerante Algorithmen entwickelt die Ausfalle von Prozessoren erkennen und die Berechnung wiederherstellen konnen 5 Ansatze BearbeitenStatische Lastverteilung mit vollstandigem Bekenntnis der Jobs Prefix Summe Algorithmus Bearbeiten Wenn die Aufgaben unabhangig voneinander und spaltbar sind und wenn man ihre jeweilige Ausfuhrungszeit kennt gibt es einen einfachen und optimalen Algorithmus Indem die Aufgaben so aufgeteilt werden dass jeder Prozessor den gleichen Rechenaufwand hat mussen die Ergebnisse nur noch gruppiert werden Mit Hilfe eines Prefix Summe Algorithmus kann diese Division in einer logarithmischen Zeit der Anzahl der Prozessoren berechnet werden Wenn sich die Aufgaben jedoch nicht unterteilen lassen man sagt sie seien atomar obwohl die Optimierung der Aufgabenzuweisung ein schwieriges Problem darstellt ist es immer noch moglich eine relativ faire Verteilung der Aufgaben zu approximieren vorausgesetzt dass die Grosse jeder einzelnen Aufgabe viel kleiner ist als die Gesamtmenge der von jedem der Knoten durchgefuhrten Berechnungen 1 Meistens ist die Ausfuhrungszeit einer Aufgabe unbekannt und es liegen nur grobe Naherungswerte vor Dieser Algorithmus ist zwar besonders effizient aber fur diese Szenarien nicht praktikabel Statische Lastverteilung ohne Vorkenntnisse Bearbeiten Wenn die Ausfuhrungszeit uberhaupt nicht im Voraus bekannt ist ist eine statische Lastverteilung immer moglich Round Robin Bearbeiten In diesem Algorithmus wird die erste Anfrage an den ersten Server gesendet danach die nachste an den zweiten und so weiter bis zur letzten Dann beginnen wir wieder damit dass wir die nachste Anfrage dem ersten Server zuweisen und so weiter Dieser Algorithmus kann so gewichtet werden dass die leistungsstarksten Einheiten die grosste Anzahl von Anfragen erhalten und diese als erste erhalten Randomisierte Zuweisung Bearbeiten Es handelt sich einfach um die zufallige Zuweisung von Aufgaben an die verschiedenen Server Diese Methode funktioniert recht gut Wenn die Anzahl der Aufgaben im Voraus bekannt ist ist es noch effizienter eine zufallige Permutation im Voraus zu berechnen Dadurch werden Kommunikationskosten fur jeden Auftrag vermieden Ein Verteilungsmeister ist nicht notig denn jeder weiss welche Aufgabe ihm zugewiesen ist Auch wenn die Anzahl der Aufgaben nicht bekannt ist kann auf die Kommunikation mit einer allen Prozessoren bekannten pseudo zufalligen Zuweisungsgenerierung verzichtet werden Die Leistung dieser Strategie gemessen an der Gesamtausfuhrungszeit fur einen bestimmten festen Satz von Aufgaben nimmt mit der maximalen Grosse der Aufgaben ab Master Worker Bearbeiten nbsp Master Worker SchemaDer Master Worker Schema gehort zu den einfachsten dynamischen Lastverteilungsalgorithmen Ein Meister verteilt die Arbeitslast auf alle Arbeiter manchmal auch als Slave bezeichnet Zunachst sind alle Arbeiter untatig und melden dies dem Meister Der Meister verteilt die Aufgaben an sie Wenn er keine Aufgaben mehr zu vergeben hat informiert er die Arbeiter so dass sie nicht mehr um Arbeit bitten sollen Der Vorteil dieses Systems ist dass es die Last sehr gerecht verteilt Wenn man die fur den Auftrag benotigte Zeit nicht berucksichtigt ware die Ausfuhrungszeit mit der oben angegebenen Prefix Summe vergleichbar Das Problem mit diesem Algorithmus ist dass er sich aufgrund der grossen Kommunikationsvolumen nur schwer an eine grosse Anzahl von Prozessoren anpassen kann Dieser Mangel an Skalierbarkeit fuhrt dazu dass es bei sehr grossen Servern oder sehr grossen Parallelrechnern schnell nicht mehr funktionsfahig ist Der Master wird zum Engpass Die Qualitat des Algorithmus kann jedoch erheblich verbessert werden wenn der Master durch eine Aufgabenliste ersetzt wird in der die verschiedenen Prozessoren verwendet werden Obwohl dieser Algorithmus etwas schwieriger zu implementieren ist verspricht er eine viel bessere Skalierbarkeit auch wenn er fur sehr grosse Rechenzentren immer noch unzureichend ist Verteilte Architektur ohne Vorkenntnisse der Arbeitsdiebstahl Bearbeiten Eine Technik die zur Uberwindung von Skalierbarkeitsproblemen ohne Vorkenntnis der Ausfuhrungszeiten eingesetzt wird ist Work stealing englisch fur Arbeitsdiebstahl Der Ansatz besteht darin jedem Prozessor eine bestimmte Anzahl von Aufgaben nach dem Zufallsprinzip oder auf vordefinierte Weise zuzuweisen und dann inaktiven Prozessoren zu erlauben Arbeit von aktiven oder uberlasteten Prozessoren zu stehlen Es gibt mehrere Implementierungen dieses Konzepts die durch ein Modell der Aufgabenteilung und durch die Regeln die den Austausch zwischen den Prozessoren bestimmen definiert sind Diese Technik kann zwar besonders effektiv sein ist aber schwierig zu implementieren da sichergestellt werden muss dass der Nachrichtenaustausch nicht die tatsachliche Ausfuhrung von Berechnungen zur Losung des Problems ersetzt Bei den atomaren Aufgaben lassen sich zwei Hauptstrategien unterscheiden solche bei denen die Prozessoren mit geringer Last ihre Rechenkapazitat denjenigen mit der hochsten Last anbieten und solche bei denen die am starksten belasteten Einheiten die ihnen zugewiesene Arbeitsbelastung verringern wollen Es hat sich gezeigt dass es bei hoher Auslastung des Netzwerks effizienter ist wenn die am wenigsten belasteten Einheiten ihre Verfugbarkeit anbieten und dass bei geringer Auslastung des Netzwerks die uberlasteten Prozessoren die Unterstutzung der am niedrigsten ausgelasteten Einheiten aktiv benotigen Diese Faustregel begrenzt die Anzahl der ausgetauschten Nachrichten Fur den Fall dass man von einer einzigen grossen Aufgabe ausgeht die nicht uber eine atomare Ebene hinaus aufgeteilt werden kann gibt es einen sehr effizienten Algorithmus bei dem die ubergeordnete Aufgabe in einem Baum verteilt wird Vorfahren Bearbeiten Zunachst haben alle Prozessoren eine leere Aufgabe ausser einem der sequentiell daran arbeitet Inaktive Prozessoren stellen dann nach dem Zufallsprinzip Anfragen an andere Prozessoren die nicht unbedingt aktiv sind Wenn dieser in der Lage ist die Aufgabe an der er arbeitet zu unterteilen so tut er dies indem er einen Teil seiner Arbeit an den anfordernden Knotenpunkt sendet Andernfalls gibt es eine leere Aufgabe zuruck Dadurch wird eine Baumstruktur erzeugt Es ist dann notwendig ein Beendigungssignal an den ubergeordneten Prozessor zu senden wenn die Teilaufgabe abgeschlossen ist so dass dieser wiederum die Nachricht an seinen ubergeordneten Prozessor sendet bis er die Wurzel des Baums erreicht Wenn der erste Prozessor d h die Wurzel fertig ist kann eine globale Beendigungsnachricht broadcast werden Am Ende ist es notwendig die Ergebnisse zusammenzustellen indem man den Baum wieder hochfahrt Effizienz Bearbeiten Die Effizienz eines solchen Algorithmus liegt nahe an der Prafixsumme wenn die Zeit fur das Schneiden und die Kommunikation im Vergleich zur zu erledigenden Arbeit nicht zu hoch ist Um zu hohe Kommunikationskosten zu vermeiden ist es moglich sich eine Liste von Jobs auf gemeinsamem Speicher vorzustellen Daher liest eine Anforderung einfach von einer bestimmten Position in diesem gemeinsamen Speicher auf Anforderung des Masterprozessors Anwendungsbeispiele BearbeitenEinige mogliche 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 fugt der HTTP Anfrage zusatzliche Informationen hinzu um Anfragen desselben Benutzers an denselben Server zu schicken Dies ist auch bei der Nutzung von SSL zur Verschlusselung der Kommunikation wichtig damit nicht fur jede Anfrage ein neuer SSL Handshake durchgefuhrt werden muss Lastverteilung wird ebenfalls bei Daten Sprachleitungen verwendet um den Verkehrsfluss auf parallel gefuhrte Leitungen zu verteilen In der Praxis treten jedoch haufig Probleme dabei auf den Daten Sprachverkehr gleichmassig auf beide Leitungen zu verteilen Es wird daher meist die Losung implementiert dass eine Leitung als Hin und die zweite Leitung als Ruckkanal Verwendung findet Load Balancing geht oft einher mit Mechanismen zur Ausfallsicherheit Durch den Aufbau eines Clusters mit entsprechender Kapazitat und der Verteilung der Anfragen auf einzelne Systeme erreicht man eine Erhohung der Ausfallsicherheit sofern der Ausfall eines Systems erkannt und die Anfragen automatisch an ein anderes System abgegeben werden siehe auch Hochverfugbarkeit bzw High Availability HA Serverlastverteilung Bearbeiten Serverlastverteilung en Server Load Balancing SLB kommt uberall dort zum Einsatz wo sehr viele Clients eine hohe Anfragendichte erzeugen und damit einen einzelnen Server Rechner uberlasten wurden Durch Verteilung der Anfragen auf mehrere Server mittels SLB lassen sich Anwendungen skalieren Typische Kriterien zur Ermittlung der Notwendigkeit von SLB sind die Datenrate die Anzahl der Clients und die Anfragerate Ein weiterer Aspekt ist die Erhohung der Datenverfugbarkeit durch SLB Der Einsatz mehrerer Systeme mit selber Daten Anwendungsbasis ermoglicht redundante Datenhaltung Die Aufgabe des SLB ist hier die Vermittlung der Clients an die einzelnen Server Diese Technik wird unter anderem bei Content Delivery Networks eingesetzt Zum Einsatz kommt SLB bei grossen Portalen wie etwa Wikipedia Marktplatzen 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 umgesetzt werden DNS Round Robin Bearbeiten Hierbei werden zu einem Hostnamen im Domain Name System mehrere IP Adressen hinterlegt die wechselseitig als Ergebnis von Anfragen zuruckgeliefert werden Es ist die einfachste Moglichkeit der Lastenverteilung Fur eine detaillierte Beschreibung siehe Lastverteilung per DNS NAT based SLB Bearbeiten Aufwendiger aber leistungsfahiger ist das so genannte NAT based SLB Hier mussen zunachst zwei Netze aufgebaut werden ein privates Netz dem die Server angehoren und ein offentliches Netz das uber Router mit dem offentlichen Internet verbunden ist Zwischen diesen beiden Netzen wird ein Content Switch geschaltet also ein Router der Anfragen aus dem offentlichen 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 namlich 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 uber den Load Balancer fliesst dieser also fruher oder spater 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 zusatzlich geschutzt werden Zahlreiche Hersteller von Load Balancer Losungen bieten hierfur zusatzliche Sicherheitsmodule an die Angriffe oder auch fehlerhafte Anfragen schon vor Erreichen der Servercluster ausfiltern konnen Auch die Terminierung von SSL Sessions und somit die Entlastung der Servercluster bei HTTP Farmen ist ein nicht zu unterschatzender Vorteil beim Server Based Loadbalancing Neben aktiven Healthchecks wie sie bei den anderen Verfahren notwendig sind sind seit einiger Zeit bei grossen Web Clustern zunehmend passive Healthchecks im Einsatz Hier wird der ein und ausgehende Datenverkehr durch den Load Balancer uberwacht sobald ein Rechner im Servercluster eine Zeituberschreitung bei der Beantwortung einer Anfrage auslost 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 mussen uber 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 unverandert 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 namlich dem Load Balancer wahrend der Server tatsachlich 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 Ruckverkehr findet auf direktem Wege statt Anycast SLB Bearbeiten Bei der Lastverteilung uber Anycast wird eine ganze Gruppe von Rechnern uber eine Adresse angesprochen Es antwortet derjenige der uber die kurzeste Route erreichbar ist Im Internet wird dieses mit BGP realisiert Der Vorteil dieser Losung 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 uber Sessions Fur bestehende Sessions wird z B der Inhalt des Warenkorbes gespeichert Dies setzt aber voraus dass ein Client fur den bereits eine Session eroffnet wurde immer wieder mit demselben Server kommuniziert sofern hier clientbasierte Sessions verwendet werden Entweder mussen dazu alle Verbindungen eines Clients uber dessen IP auf denselben Server geleitet werden oder der Load Balancer muss fahig 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 denselben Backendserver wird als Affinitat bezeichnet Als Load Balancer werden in der Praxis daher Layer 4 7 Switches eingesetzt Alternativ kann das Problem auch durch die Anwendung selbst gelost 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 6 Literatur BearbeitenIngo Wegener Hrsg Highlights aus der Informatik Springer Verlag Berlin Heidelberg ISBN 978 3 642 64656 0 Hartmut Ernst Grundkurs Informatik 3 Auflage Friedrich Vieweg amp Sohn Wiesbaden 2003 ISBN 978 3 528 25717 0 Paul J Kuhn Kommunikation in verteilten Systemen Springer Verlag Berlin Heidelberg 1989 ISBN 978 3 540 50893 9 Bernd Bundschuh Peter Sokolowsky Rechnerstrukturen und Rechnerarchitekturen Friedrich Vieweg amp Sohn Verlag Wiesbaden 1988 ISBN 978 3 528 04389 6 Einzelnachweise Bearbeiten a b Sanders Peter Dietzfelbinger Martin Dementiev Roman Sequential and parallel algorithms and data structures the basic toolbox Hrsg Springer 2019 ISBN 978 3 03025209 0 Qi Liu Weidong Cai Dandan Jin et Jian Shen Estimation Accuracy on Execution Time of Run Time Tasks in a Heterogeneous Distributed Environment In Sensors 30 August 2016 ISSN 1424 8220 S 1386 doi 10 3390 s16091386 PMID 27589753 englisch Alakeel Ali A Guide to Dynamic Load Balancing in Distributed Computer Systems In International Journal of Computer Science and Network Security IJCSNS Vol 10 November 2009 englisch researchgate net Asghar Sajjad Aubanel Eric Bremner David A Dynamic Moldable Job Scheduling Based Parallel SAT Solver In 22013 42nd International Conference on Parallel Processing Oktober 2013 S 110 119 doi 10 1109 ICPP 2013 20 ieee org G Punetha N Gnanambigai P Dinadayalan Survey on fault tolerant Load balancing algorithms in cloud computing In IEEE Hrsg 2015 2nd International Conference on Electronics and Communication Systems ICECS 2015 ISBN 978 1 4799 7225 8 doi 10 1109 ecs 2015 7124879 Shared Session Management Memento vom 23 Mai 2011 im Internet Archive Abgerufen am 3 Juni 2011 Weblinks BearbeitenLastverteilung in einer clusterbasierten verteilten virtuellen Umgebung abgerufen am 24 Juli 2017 Lastverteilung in verteilten Multi Agenten Simulationen abgerufen am 24 Juli 2017 Lastverteilung Verteilte Systeme abgerufen am 24 Juli 2017 Konzepte der parallelen Programmierung abgerufen am 24 Juli 2017 Konzeption einer Hochverfugbarkeitslosung fur LAMP Systeme mit Open Source Software und Standard Hardware abgerufen am 24 Juli 2017 Normdaten Sachbegriff GND 4323960 2 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Lastverteilung Informatik amp oldid 235848333