Clustering/Intelligentes Cluster-Management

Load-Balancing - ein Muss für Hochverfügbarkeit

26.10.2001
Zu den Schlüsselkomponenten in Cluster-Installationen gehören Mechanismen für das Load-Balancing. Von ihnen hängt die Effizienz und Ausfallsicherheit eines Rechnerverbunds ab. Von Jürgen Schopper*

Viele Unternehmen setzen heute auf Server-Farmen: Mehrere Rechner stellen denselben Dienst zur Verfügung, sodass trotz geplantem oder ungewolltem Ausfall eines Servers der Dienst erreichbar bleibt. Geplante Ausfälle dienen der Wartung oder einem Upgrade; ungewollte Unterbrechungen entstehen beispielsweise durch Hacker oder überladene Systeme. Egal wodurch verursacht, Ausfälle beeinträchtigen die Systemleistung insgesamt. Zusätzlich werden Anfragen nicht intelligent auf die einzelnen Server innerhalb der Farm verteilt, bestehende Ressourcen damit unwirtschaftlich eingesetzt. Load Balancing ist hier die Lösung: Dessen wichtigste Aufgabe ist, einen effizienten und schnellen Zugang zu Informationen zu schaffen. Damit wird die Netz-Performance optimiert, und Web-Inhalte sind auch in Spitzenzeiten oder bei Server-Ausfall erreichbar.

Man unterscheidet zwei Arten der Lastverteilung in einem Server-Cluster: softwarebasierendes und hardwarebasierendes Load-Balancing. Obwohl Software-Load-Balancing meist die kostengünstigere Variante ist, birgt es auch einige Nachteile: Zusätzliche Software auf einem Server reduziert dessen freie Ressourcen. Außerdem trägt eine zusätzliche Software nicht unbedingt zur Server-Stabilität bei. Dies führt zu Verzögerungen, Benutzer müssen länger auf die gewünschten Informationen warten.

Für eine Statusüberprüfung wenden die meisten Softwarelösungen ausschließlich die Methode des "Ping" des Internet Control Message Protocol (ICMP) an: Nachteil ist, dass der ICMP-Ping lediglich die Server-Netz-Verbindung testet, aber nicht die einzelnen Dienste beziehungsweise den gesamten Funktionsablauf.

Um entstehende Lasten zu verteilen, greift die Load-Balancing-Software auf das Round-Robin-Verfahren zurück. Dabei wird jedem Server der Reihe nach eine Anfrage zugeteilt. Allerdings stößt diese Lösung schnell an Grenzen, da das menschliche Surfverhalten nicht berücksichtigt wird - Anwender verharren unterschiedlich lang auf den einzelnen Servern, was erneut zu unausgelasteten Server-Ressourcen führen kann.

Darüber hinaus erfordern Softwarelösungen hohen Administrationsaufwand, denn mit jedem neuen Server, der dem Cluster hinzugefügt wird, muss auch Load-Balancing-Software installiert werden. Konsequenz ist: Die gesamte Lösung wird komplizierter, und die Wachstumsmöglichkeiten sind eingeschränkt. Ein weiterer Nachteil ergibt sich durch die Abhängigkeit von einem bestimmten Betriebssystem. Manche Software ist nur mit einer eingeschränkten Auswahl von Betriebssystemen kompatibel. Damit wird die Chance auf eine heterogene Server-Umgebung entscheidend vermindert.

Bei Hardwarelösungen wird zwischen Anwendern und Server-Cluster ein dediziertes Gerät eingesetzt. Der Vorteil ist, dass die Server ohne zusätzliche Software weiter wie bisher laufen, während die dedizierte Hardware für das Traffic-Management zuständig ist. Dies führt zu einer verbesserten Performance eines Standortes beziehungsweise des ganzen Server-Clusters. Die Hardware arbeitet zudem Betriebssystem-unabhängig und ermöglicht dadurch eine heterogene Server-Umgebung.

Bei Server-Upgrades oder Systemwartungen garantiert Hardware-Load-Balancing einen kontrollierten Server-Shutdown, um Serviceunterbrechungen zu vermeiden. Der gesamte Datenverkehr zu den Server-Clustern wird optimiert, da die entsprechenden Server nicht mit neuen Anwendern belastet werden. Noch laufende Anfragen können beendet werden, bevor der Server offline gesetzt wird. Diese Funktion garantiert sowohl unterbrechungsfreien Service als auch einfache Handhabung der Server-Farm. Nach einem Reboot leitet der Load-Balancer dem Server nur schrittweise Clients zu.

Load-Balancer können lokal und global eingesetzt werden. Bei lokaler Lastverteilung werden anfallende Lasten dynamisch auf Server an einem Standort verteilt. Lokale Load-Balancer überwachen hierfür Ressourcenaktivitäten und testen die Verfügbarkeit. Ähnlich wie die Software testet der Hardware-Load-Balancer die Verfügbarkeit, indem er Anfragen an den Server richtet und auf eine Reaktion wartet. Um die Ausfallsicherheit des Systems zu gewährleisten, wird der gesamte Datenweg überwacht. Die Statusüberprüfung der Server geschieht aber nicht nur per Ping, sondern zusätzlich durch eine Abfrage von TCP- oder UDP-Ports. Ebenso wird ein Inhalts- und/oder Authentifizierungstest von HTTP-Seiten durchgeführt. Bei Ausfall eines Servers oder einer Netzkomponente wird der Benutzer transparent zu einer verfügbaren Ressource innerhalb des Clusters geleitet, wodurch jederzeit eine fehlerfreie Übertragung garantiert wird.

Load-Balancer steuert AnfragenGenerell nehmen Load-Balancer den gesamten Datenverkehr auf, der an mehrere zusammengehörige Server gerichtet ist, und verteilen ihn. Sie sind in der Lage, verschiedene Verteilungsschemata parallel für unterschiedliche Server-Gruppen auszuführen, da Daten, FTP-Files und E-Mail häufig auf verschiedenen Servern innerhalb einer Server-Farm vorgehalten werden. Benutzer verwenden immer dieselbe URL, wenn sie auf eine Site zugreifen. Sie werden dann je nach Anwendung auf den entsprechenden Server weitergeleitet. Dabei ist eine der Hauptaufgaben der Load-Balancer die kontinuierliche Überwachung der Auslastung sowie Verfügbarkeit der Server. Startet ein Benutzer eine Anfrage, wird diese zuerst an den Load-Balancer geleitet. Dieser entscheidet, an welchen Server die Anfrage geschickt werden soll.

Load-Balancer treffen Traffic-Redirection-Entscheidungen unter anderem nach IP-Adressen, Applikationstyp und -Content. Dabei werden Applikationen, die das Internet Protokoll (IP) verwenden, unterstützt: Telnet, Rshell, TFTP, FTP, HTTP, E-Mail, DNS oder Voice over IP (VoIP). Der Load-Balancer ermöglicht zusätzlich URL-Switching: Der Datenverkehr wird entsprechend der URL oder basierend auf Feldinformationen innerhalb der URL umgeleitet.

Für optimale Web-Switching-Performance kann jede URL entweder zu einem Server umgeleitet oder über mehrere Server verteilt werden. Basierend auf der im URL-Text enthaltenen Information hält der Load-Balancer eine Verbindung zwischen einem Client und einem dedizierten Server dauerhaft aufrecht (Client-Persistance). Schließlich sollte es durch den Load-Balancer möglich sein, Anwender in bestimmten Fällen immer zu demselben Server zu leiten.

Eine weitere Variante, um Client-Persistance zu erreichen, basiert auf der Funktion des Load-Balancers, Cookies zu interpretieren. Dadurch werden ein optimales Traffic-Management und ein personenbezogenes Content-Management für diese Applikationen gewährleistet. Wurde eine Verbindung über das Secure-Socket-Layer-(SSL)-Protokoll aufgebaut, hat der Load-Balancer die Möglichkeit, aufgrund der SSL-Session-ID-Verfolgung die Client-Persistance zu gewährleisten.

Immer mehr Unternehmen nutzen heute Rechenzentren an verschiedenen Standorten, um das Netz redundant zu gestalten. Hierfür werden globale Load-Balancer eingesetzt, um die Anfragen der Kunden und Mitarbeiter weltweit verteilen zu können. Mit einem geeigneten globalen Load- Balancer wird nicht nur die Auslastung, relative Belastbarkeit und verfügbare Bandbreite der einzelnen Standorte geprüft, sondern auch die Netznähe gemessen. Die Entfernung zwischen Anwender und Standort definiert sich durch die Reaktionszeit und Anzahl der Router-Hops. Kunden und Mitarbeiter werden so auf optimal verfügbare und nächstgelegene Server im gesamten globalen Netz geleitet.

Der ideale Load-Balancer bietet sowohl lokale als auch globale Lastverteilung zwischen den verschiedenen Standorten in einem Gerät.

*Jürgen Schopper ist Channel Account Manager bei der Radware GmbH in München.

Abb: Globales Load-Balancing

Über globale Lastverteiler lassen sich Server-Anfragen über entfernte Standorte hinweg verteilen. Quelle: Radware