Ein Load Balancer kann viele Lastverteilungsmethoden bieten, die wir üblicherweise als Scheduling-Methoden oder -Algorithmen bezeichnen:

Round Robin

Diese Methode verteilt empfangene Anfragen zyklisch an jede Maschine im Server-Cluster, d. h. an die verfügbaren Server. Wenn diese Methode verwendet wird, sollten alle für den virtuellen Dienst markierten Server über ähnliche Ressourcenkapazitäten verfügen und Anwendungen mit ähnlichen Lasten hosten. Wenn alle Server die gleiche oder eine ähnliche Leistung haben, führt die Wahl dieser Methode zu einer gleichmäßigen Serverlast. Unter dieser Voraussetzung ist Round-Robin-Scheduling eine einfache und effektive Möglichkeit, Anfragen zu verteilen. In Umgebungen, in denen sich die Server unterscheiden, bedeutet die Wahl dieser Methode jedoch, dass schwächere Server im nächsten Zyklus ebenfalls Round-Robin-Anfragen erhalten, selbst wenn der Server bereits nicht mehr in der Lage ist, die aktuelle Anfrage zu bewältigen. Dies kann dazu führen, dass schwächere Server überlastet werden.

Gewichtetes Round Robin

Dieser Algorithmus behebt die Mängel des einfachen Round-Robin-Scheduling-Algorithmus: Eingehende Anfragen werden der Reihe nach auf die Server im Cluster verteilt, wobei die jedem Server vorab zugewiesenen Gewichte berücksichtigt werden. Der Administrator definiert einfach das Gewicht jedes Servers basierend auf dessen Verarbeitungsfähigkeit. Zum Beispiel erhält der leistungsstärkste Server A ein Gewicht von 100, während der leistungsschwächste Server ein Gewicht von 50 erhält. Das bedeutet, dass Server A 2 aufeinanderfolgende Anfragen erhält, bevor Server B seine erste Anfrage erhält, und so weiter.

Wenigste Verbindungen

Keine der beiden oben genannten Methoden berücksichtigt, dass das System nicht erkennen kann, wie viele Verbindungen zu einem bestimmten Zeitpunkt aufrechterhalten werden. Daher kann es vorkommen, dass Server B weniger Verbindungen als Server A erhält, aber bereits überlastet ist, weil Benutzer auf Server B ihre Verbindungen länger offen halten. Das heißt, die Anzahl der Verbindungen, d. h. die Last auf einem Server, ist kumulativ. Dieses potenzielle Problem kann durch den "Least Connection"-Algorithmus vermieden werden: Eingehende Anfragen werden entsprechend der Anzahl der derzeit auf jedem Server offenen Verbindungen verteilt. Das heißt, der Server mit den wenigsten aktiven Verbindungen erhält automatisch die nächste eingehende Anfrage. Das Grundprinzip ist dasselbe wie beim einfachen Round Robin: Alle Server mit virtuellen Diensten sollten eine ähnliche Ressourcenkapazität haben. Es ist erwähnenswert, dass in Konfigurationen mit geringem Datenverkehr der Datenverkehr auf jedem Server nicht gleich ist und der erste Server bevorzugt wird. Das liegt daran, dass, wenn alle Server identisch sind, der erste Server priorisiert wird; bis der erste Server kontinuierlichen aktiven Datenverkehr aufweist, wird ansonsten immer der erste Server zuerst ausgewählt.

Wenigste Verbindungen – langsame Startzeit

Für die Scheduling-Methoden „Least-Connection“ und „Gewichtete Least-Connection“ kann für einen Server, der gerade in die Produktionsumgebung aufgenommen wurde, ein Zeitraum konfiguriert werden. Während dieses Zeitraums ist die Anzahl der Verbindungen begrenzt und steigt langsam an. Dies bietet dem Server eine „Übergangszeit“, um sicherzustellen, dass er nicht unmittelbar nach dem Start aufgrund zu vieler zugewiesener Verbindungen überlastet wird. Dieser Wert wird in der L7-Konfigurationsoberfläche festgelegt.

Gewichtete Least-Connection

Wenn Server unterschiedliche Ressourcenkapazitäten haben, ist die Methode „Gewichtete Least-Connection“ besser geeignet. Die Anzahl der aktiven Verbindungen, die durch die vom Administrator basierend auf den Serverbedingungen angepassten Gewichtungen bestimmt wird, sorgt im Allgemeinen für eine sehr ausgewogene Auslastung der Server, da sie die Vorteile sowohl der Least-Connection- als auch der Gewichtungsmethode kombiniert. Typischerweise ist dies eine sehr faire Verteilungsmethode, da sie das Verhältnis von Verbindungen zum Servergewicht verwendet; der Server mit dem niedrigsten Verhältnis im Cluster erhält automatisch die nächste Anfrage. Beachten Sie jedoch, dass bei Verwendung dieser Methode unter Bedingungen mit geringem Datenverkehr die Hinweise in der Methode „Least-Connection“ zu beachten sind.

Agentenbasierte adaptive Lastverteilung

Zusätzlich zu den oben genannten Methoden enthält der Load Balancer eine adaptive Logik, um regelmäßig den Serverstatus und die Gewichtungen dieser Server zu überwachen. Für die sehr leistungsfähige Methode "Agent Based Adaptive Balancing" prüft der Load Balancer regelmäßig die Last aller Server auf folgende Weise: Jeder Server muss eine Datei bereitstellen, die eine Zahl von 0 bis 99 enthält, welche die tatsächliche Last dieses Servers angibt (0 = im Leerlauf, 99 = überlastet, 101 = ausgefallen, 102 = vom Administrator deaktiviert), und der Server ruft diese Datei per HTTP GET ab; gleichzeitig gehört es zu den Aufgaben eines Servers im Cluster, seine eigene Last in Form einer Binärdatei bereitzustellen. Es gibt jedoch keine Einschränkung, wie Server ihre eigene Last berechnen. Basierend auf der Gesamtlast der Server können zwei Strategien gewählt werden: Im Normalbetrieb berechnet der Scheduling-Algorithmus ein Gewichtungsverhältnis auf Grundlage des Verhältnisses zwischen dem erfassten Serverlastwert und der Anzahl der diesem Server zugewiesenen Verbindungen. Wenn ein Server überlastet ist, wird seine Gewichtung daher vom System transparent neu angepasst. Wie beim gewichteten Round-Robin-Scheduling können fehlerhafte Verteilungen aufgezeichnet werden, sodass unterschiedliche Gewichtungen effektiv verschiedenen Servern zugewiesen werden können. In einer Umgebung mit sehr geringem Datenverkehr liefern die von Servern gemeldeten Lastwerte jedoch keine repräsentative Stichprobe; eine Lastverteilung auf Grundlage dieser Werte führt zu Kontrollverlust und Oszillation der Steuerbefehle. Daher ist es in diesem Fall sinnvoller, die Lastverteilung auf Grundlage statischer Gewichtungsverhältnisse zu berechnen. Wenn die Last aller Server unter dem vom Administrator definierten unteren Grenzwert liegt, wechselt der Load Balancer automatisch zu gewichtetem Round-Robin, um Anfragen zu verteilen; wenn die Last größer als der vom Administrator definierte untere Grenzwert ist, wechselt der Load Balancer zurück in den adaptiven Modus.

Fest gewichtet

Das höchste Gewicht wird nur verwendet, wenn die Gewichtswerte der anderen Server alle sehr niedrig sind. Wenn jedoch der Server mit dem höchsten Gewicht ausfällt, bedient der Server mit der nächsthöchsten Priorität den Client. Bei dieser Methode muss das Gewicht jedes realen Servers basierend auf der Serverpriorität konfiguriert werden.

Gewichtete Antwort

Die Verkehrssteuerung erfolgt über gewichtetes Round Robin. Die beim gewichteten Round Robin verwendeten Gewichte werden auf Grundlage der Antwortzeiten der Server-Verfügbarkeitsprüfungen berechnet. Jede Verfügbarkeitsprüfung wird zeitlich gemessen, um zu erfassen, wie lange eine erfolgreiche Antwort gedauert hat. Beachten Sie jedoch, dass diese Methode davon ausgeht, dass Server-Heartbeat-Prüfungen auf der Maschinengeschwindigkeit basieren, diese Annahme jedoch nicht immer zutreffen muss. Die Summe der Antwortzeiten aller Server des virtuellen Dienstes wird addiert, und dieser Wert wird verwendet, um das Gewicht eines einzelnen physischen Servers zu berechnen; dieser Gewichtswert wird etwa alle 15 Sekunden berechnet.

Quell-IP-Hash

Diese Methode erzeugt einen Hashwert aus der Quell-IP der Anfrage und verwendet diesen Hashwert, um den richtigen Real-Server zu finden. Das bedeutet, dass für denselben Host der entsprechende Server immer derselbe ist. Bei dieser Methode müssen keine Quell-IPs gespeichert werden. Beachten Sie jedoch, dass diese Methode zu einer ungleichmäßigen Serverlast führen kann.

Quelle: http://www.codeceo.com/article/balanced-algorithm.html