Der Lastausgleich ist ein wesentlicher Bestandteil bei jeder Bereitstellung von Anwendungen. Damit erreicht man hohe Verfügbarkeit, Performance und Sicherheit. Dieser Beitrag erklärt, welche Rolle dabei die Algorithmen für das Scheduling spielen und wie Persistenz und Timeouts eine gleichmäßige Auslastung beeinflussen.
Bei der Verteilung von Workloads sind zwei wichtige Entscheidungen zu treffen:
- Wenn eine neue Client-Verbindung eingeht, an welchen Server im Pool soll sie gesendet werden? Dies wird durch den Scheduling-Algorithmus gesteuert.
- Wenn ein Client eine vorherige Verbindung wieder aufnehmen möchte, dann stellt sich die Frage: Wie soll diese Verbindung identifiziert werden, damit der Client demselben Server zugewiesen wird wie beim letzten Mal? Dies ist die Aufgabe des Persistenz-Algorithmus.
Zusammen bestimmen diese beiden Algorithmen das Traffic-Aufkommen im Server-Pool und damit die Belastung der einzelnen Server.
Grundlegende Methoden des Load Balancing
Es gibt mehrere grundlegende Verfahren, mit denen man eine gleichmäßige Auslastung der Applikations-Server erreichen kann, wobei jede davon abhängig vom Szenario ihren Nutzen hat.
Round Robin
Bei Round Robin wird jede neue Verbindung dem nächsten Server im Pool zugewiesen. Sobald jeder Server eine Verbindung erhalten hat, kehrt der Algorithmus an den Anfang der Liste zurück und durchläuft sie erneut.
Dies ist die einfachste Scheduling-Methode, und wenn die Verbindungen sehr kurz und gleichmäßig bei der Belastung sind und zudem die Anwendung zustandslos ist, dann kann sie ohne große Probleme funktionieren. In diesem einfachen Fall braucht man keine Persistenz und zurückkehrende Clients werden immer wieder auf den Server-Pool verteilt, was ihn ziemlich gleichmäßig auslastet.
Probleme treten auf, wenn die Verbindungen ungleiche Lasten mit sich bringen und die Client-Sitzungen länger dauern, beispielsweise wenn ein Zustand aufrechterhalten werden muss, und Persistenz verwendet wird (etwa bei einer Webmail- oder CRM-Sitzung). Mit der Zeit wird dann die Anzahl der Verbindungen pro Server ungleichmäßig, ebenso die Belastung der Server.
Least Connection
Least Connection ist eine weitere Methode, mit der sich die Last über die Zeit besser verteilen lässt. Anstatt den Server-Pool zyklisch zu durchlaufen, betrachtet sie die Anzahl der aktuellen Verbindungen pro Server und wählt den Server mit den wenigsten Verbindungen. Die Anzahl der Verbindungen pro Server wird somit im Laufe der Zeit immer wieder neu ausbalanciert.
Aber selbst mit Least Connection kann es zu einem sehr unausgeglichenen Zustand kommen, wenn Persistenz verwendet wird. Sie setzt nämlich eine ausgewogene Zuteilung von Verbindungen außer Kraft, weil wiederkehrende Clients nicht an einen beliebigen Server weitergeleitet werden können.
Wichtig ist in diesem Zusammenhang, wie man eine zurückkehrende Client-Verbindung identifiziert. Die Quell-IP ist eine gängige und einfache Methode dafür, aber genau das ist das Problem - sie ist zu einfach.
Wenn sich eine große Anzahl von Clients hinter einem NAT-Router befindet, erscheinen sie alle als ein einziger Client und werden alle an denselben Server im Pool weitergeleitet. Dies kann auch passieren, wenn die Benutzer von einem Terminalserver kommen.
Andererseits können mobile Clients ihre Quell-IP-Adresse häufig ändern, wenn sie sich im Netz bewegen. Sie verlieren dann bei der Identifikation mittels IP ihren Sitzungsstatus, weil sie immer wieder neu zugeordnet werden.
Aktives Cookie
Für Web-Anwendungen bieten Cookies eine viel bessere Möglichkeit, einzelne Clients zu identifizieren. Der Load Balancer setzt jedes Mal ein Cookie mit einer eindeutigen Kennung, sobald ein neuer Client eine Sitzung eröffnet.
Auf diese Weise kann der Load Balancer diesen Client über einen längeren Zeitraum hinweg verfolgen, unabhängig davon, woher sein Traffic stammt.
Zeitspanne für Persistenz
Der letzte Faktor ist der Persistenz-Timeout. Er legt fest, wie lange man die Verbindung eines Clients beibehält, bevor er auf einen anderen Server verlagert wird. Bei einer zu kurzen Zeitspanne geht der Sitzungsstatus des Clients verloren, bei einer zu langen besteht die Gefahr, dass einige Server übermäßig belastet werden.
Die Verwendung von Persistenz teilt wiederkehrende Clients dem vorherigen Server zu. Dies kann zu ungleicher Auslastung führen.
Wenn Sie sich nicht sicher sind, dann ist ein Zeitfenster von acht Stunden bei einem normalen Arbeitstag ein sicherer Wert. Längere Persistenz-Timeouts erhöhten die Wahrscheinlichkeit, dass Ihre Server ungleichmäßig ausgelastet sind.
Feinabstimmung mit Netzwerk-Telemetrie
Mit der neuen Netzwerk-Telemetrie-Funktion von Kemp LoadMaster können Sie den Load Balancer als Quelle von Flow-Daten für Ihren Flowmon Collector nutzen.
Sie können hier eine kostenlose Testversion von Kemp LoadMaster herunterladen.
Auf diese Weise erhalten Sie in Ihrem Flowmon-Dashboard sofortiges Feedback darüber, wie sich Verbindungen und Durchsatz auf den einzelnen Servern entwickeln. Dadurch können Sie Ihre Konfiguration für jede Anwendung leicht überwachen und mit einer Feinabstimmung darauf reagieren.
Wichtige Leistungskennzahlen und Traffic-Statistiken auf dem Flowmon-Dashboard
Auf dem Flowmon Collector können Sie ein umfassendes Dashboard erstellen, das die wichtigsten Kennzahlen Ihrer Anwendung anzeigt. Diese werden auf Grundlage der vom LoadMaster bereitgestellten Netzwerktelemetrie ermittelt.
Hier können Sie eine Demo zu Flowmon ansehen »
Wichtige Performance-Kennzahlen wie die Server-Antwortzeit und die Round-Trip-Zeit ermöglichen es Ihnen, zwischen Problemen auf der Netzwerk- und der Anwendungsseite zu unterscheiden.
Darüber hinaus kann man diese Messwerte zwischen den einzelnen Maschinen im Pool vergleichen und so einen Server identifizieren, der möglicherweise nicht die erwartete Leistung erbringt.
Zusammenfassung
Es ist sehr wichtig, daran zu denken, dass ein Lastausgleich für Verbindungen und nicht für den Durchsatz erfolgt. Wenn sich die Verbindungen im Durchsatz unterscheiden, dann werden ausgeglichene Verbindungen daher nicht zu einem gleichen Durchsatz pro Server führen.
Die Wahl der richtigen Kombination aus Scheduling, Persistenz und Timeout ist der Schlüssel zu einer gleichmäßigen Auslastung Ihres Server-Pools.
Sind Sie daran interessiert, einen Kemp Load Balancer selbst auszuprobieren? Sie können hier eine kostenlose Testversion herunterladen »