Aus Linux-Magazin 04/2007

Linux-basierter Loadbalancer und Web-Applikationsbeschleuniger

© Dirk Houben, Fotolia

Die Last der Anfragen in einem Cluster von Webservern zu verteilen ist weit mehr als reihum die Requests zuzuordnen. Zeus zeigt mit seiner Appliance ZXTM 7400, welche technischen Finessen von Protokollschicht 4 bis 7 nötig sind, um stark frequentierte Webauftritte in Schwung halten.

Irgendwann stößt auch der stärkste Webserver an seine Grenzen und braucht Hilfe. Die zu besorgen ist kein Problem, sie zu koordinieren sehr wohl. Jeder Cluster aus Servern (hier Webservern) muss Anfragen intelligent verteilen, um die gemeinsame Kraft auch sinnvoll einzusetzen. Von all dem soll der Client nichts bemerken, alles passiert hinter den Kulissen. Beispielsweise durch die hier getestete Appliance ZXTM 7400 von Zeus Technology [1].

Loadbalancer unterscheiden zwischen den realen Servern (Abbildung 1) und der virtuellen IP (VIP, Abbildung 2). Die realen Server sind Webserver, jeder ist mit einer eigenen, eindeutigen IP ausgestattet (reale IP, RIP). Die VIP ist nur auf dem Loadbalancer konfiguriert. Die Clients sehen nur die VIP des Webauftritts und wenden sich an die Adresse, nicht ahnend, dass sie tatsächlich bei einem Lastverteiler landen, der die Anfrage mittels Scheduling-Algorithmus einem Server zuteilt.

 

 

Eine recht simple Umsetzung dieses Prinzips arbeitet wie Destination-NAT (Network Address Translation), das die Zieladresse der Anfrage ändert (von VIP auf RIP) und bei den Antworten passend die Quelle (aus RIP mach VIP). Meist zu finden ist diese Variante in Asic-basierten Geräten (Application Specific Integrated Circuit), die mit ihrer hoch spezialisierten Hardware die Manipulation sehr schnell vornehmen. Gerade in der Anfangszeit der Web-Loadbalancer (siehe Kasten “Sieben Jahre Loadbalancing”) galten Asics als Garanten für ausreichend Performance.

Sieben Jahre
Loadbalancing

Die Idee, mehrere Webserver per Loadbalancing parallel zu betreiben, ist keineswegs neu. Sie hat allein in den vergangenen sieben Jahren zahlreiche Reinkarnationen erlebt. Auf dem Zenit der Dotcom-Blase (1999 bis 2001) war die Notwendigkeit von Lastverteilung damit begründet, dass im harten E-Commerce-Geschäft der Anbieter zum Zug kommt, dessen Systeme am schnellsten antworten. Der Kunde galt als latent ungeduldig. Die Lastverteilung fand damals ausschließlich auf OSI-Layer 4 statt, also auf der Transportschicht.

Nach den Ereignissen des 11. September wechselte die Argumentation. So genannte Flash Events (FE) oder Flash Crowds erzeugen plötzliche Spitzenlasten, die einen Server schnell in die Knie zwingen, wenn er nicht ausreichend vorbereitet ist und Ressourcen auf Reserve vorhält. Als FEs gelten erfolgreiche Werbekampangenen ebenso wie populäre Schlagzeilen oder tatsächliche Katastrophen.

Als potenzielles Nadelöhr darf ein Loadbalancer selbst kein Bremsklotz sein. Folglich verwendeten die Hersteller meist spezialisierte und Asic-basierte Hardware (Application Specific Integrated Circuit) in ihren Loadbalancern und Application Switches. Durch geschickte Zuteilung der Ressourcen (Scheduling) holten sie das Maximum aus der vorhandenen Webserver-Hardware. Nur wenige der Hersteller, die damals schon auf PC-basierte Systeme setzten, habe bis heute überlebt. Dazu gehören F5 Networks und Arraynetworks.

Der schwere Weg nach oben

Heute haben sich die Ziele der Hersteller stark verändert. Ein moderner Layer-7-Loadbalancer wie die getestete Zeus-Appliance ZXTM 7400 verspricht, einer Webserver-Farm mehr Performance und Stabilität zu verleihen, als die Summe der einzelnen Teile bietet. Wer vier Webserver betreibt und diese mit einem modernen Loadbalancer verbindet, erhält mehr als die vierfache Leistung – so das Versprechen. Die neuen Systeme erreichen ihre Ziele mit mehreren Mitteln. Sie harmonisieren zum Beispiel die Anzahl und das Handling der TCP-Verbindungen von Client zu Server und nutzen Layer-7-Technologien wie HTTP-1.1-Kompression und intelligentes Content-Caching.

Zusätzlich können die Hersteller von Layer-7-Loadbalancern darauf setzen, dass die meisten Webauftritte nicht optimal programmiert sind und sich daher gut optimieren lassen. Weil diese Tricks komplexe Logik verlangen, verzichten viele Anbieter heute auf Asics und setzen PC-basierte Serverhardware ein.

PC-Technik statt Spezialhardware

Wenn es mehr sein soll, geraten die Algorithmen schnell zu aufwändig für Asics. Glücklicherweise reicht die Prozessorleistung in Server- und PC-Hardware heutzutage auch für anspruchsvolle Aufgaben, wie die getestete Appliance beweist. Sie arbeitet eher wie ein Reverse Proxy, der keine IP-Adressen umschreibt, sondern die TCP-Verbindung des Clients terminiert und eine neue TCP-Verbindung zum Real Server öffnet. Auf diesem Weg hält er die Verbindungen unter Kontrolle und kann auch in den Datenstrom eingreifen. Der reale Server sieht die Source-IP-Adresse des Loadbalancers und schickt die Antwort dann zur Appliance, die diese an den Client weiterreicht.

Nur ein Prozess pro Core

Um mit der hohen Asic-Geschwindigkeit Schritt zu halten, fordern PCs eine clevere Programmierung. Der britische Hersteller Zeus hat dank seines hauseigenen Webservers viel Wissen in der Entwicklung optimierter Netzwerksoftware. Daraus leiteten die Programmierer ab, dass ein herkömmliches Multi-Processing- oder Multi-Threading-Modell nicht ausreicht, weil zu viel Zeit beim Kontextwechsel verloren geht.

Die Zeus-Lösung passt zu Dan Kegels Empfehlungen [3] für flotte Netzwerksoftware und belegt jeden CPU-Core mit genau einem Prozess. Das Programm nutzt den »epoll«-Mechanismus, um blockierungsfrei auf allen offenen Verbindungen nach Daten zu suchen – ganz ohne Kontextwechsel. Für alle Bearbeitungsschritte verwenden die Programmierer nicht-blockierende Funktionen.

Zeus ZXTM 7400

Aufgabe: Loadbalancing und Application Optimization für Webanwendungen

Technik: PC-basierte Appliance mit Linux und eigener Software des Herstellers Zeus

Getestete Version: 4.1r1 auf der ZXTM Appliance 7400

Preis: Die Spanne reicht von rund 15 000 Euro für das Einsteigergerät ZXTM 2000 LB bis zu 57 000 Euro für die getestete Highend-Ausführung ZXTM 7400 Appliance mit allen Software-Optionen; die Software allein kostet zwischen 5500 und 28 400 Euro

Gesundheit

Zum Geschäft der Loadbalancer gehört es, die Belastung und Verfügbarkeit der realen Server zu messen und zu bewerten (Healthcheck oder Monitoring, etwa beim TCP-Connect). Der Scheduler nutzt diese Information für seine Entscheidung, welcher Server welchen Request erhält. Dabei gilt es auch, Sessions persistent auf ihrem Server zu halten: In vielen Webapplikationen speichert der Server Informationen über den Zustand des Clients, zum Beispiel wenn sich der Benutzer einloggt oder einen virtuellen Warenkorb füllt. Das muss der Loadbalancer berücksichtigen, um die Applikation nicht aus dem Tritt zu bringen.

Bessere Loadbalancer implementieren ein Bündel von Techniken, um zu erkennen, welche Requests zu einer gemeinsamen Sitzung gehören. Die Zeus-Appliance wertet zum Beispiel Cookies aus, fügt auf Wunsch eigene Cookies ein oder benutzt eine von vielen weiteren Techniken. Sie schafft es sogar, SOAP-Anwendungen per Loadbalancing zu beschleunigen. Dazu analysiert die Appliance den XML-Inhalt der Nachrichten.

ZXTM 7400

Zeus liefert die Appliance mit fünf Netz-Interfaces (siehe Kasten “Die Hardware”). Eines dient vorrangig dem Out-of-Band-Management (OOB), also dem Admin-Zugang über ein eigenes Kabel. Für die Grundeinstellungen (Netzwerk, Default Gateway …) stehen das Web-GUI oder eine serielle Konsole bereit. Da die Appliance unter Linux läuft (modifiziertes Debian Sarge mit Ubuntu-Kernel), finden Linux-Profis eine gewohnte Kommandozeile vor.

Hardware

Die Hardware der Zeus-Appliance ZXTM 7400 stammt von der deutschen Firma Pyramid Computer [2]. Das Gerät ist zwei Rack-Units hoch, besitzt ein redundantes Netzteil sowie fünf Netzwerk-Interfaces, die alle 10/100/1000 MBit/s beherrschen. Das Design entspricht den bei Pyramid üblichen 2-HE-Chassis für Server, nur die Frontblende ist für Zeus angepasst.

Auf dem europäischen Markt ist diese Hardwarebasis häufig anzutreffen. Ein Blick in die Innereien (Abbildung 6) des Geräts offenbart, dass es sich um ein professionell aufgebautes System handelt. Auf dem Supermicro-Motherboard und darum herum hat der Hersteller alles sauber angeordnet und verbunden. Eine im Bild kaum zu erkennende Kunststoffblende teilt das Chassis in zwei Hälften – CPUs und den Rest. In jedem der Bereiche sorgen zwei Ventilatoren für Kühlung.

 

Die Appliance ZXTM 7400 ist mit zwei AMD-Prozessoren Opteron 280 ausgestattet (Dual Core, 2,64 GHz, 64 Bit). Das 8 GByte große RAM besteht aus PC3200-Modulen (DDR1-400). Moderner und schneller wären DDR2-667-Bausteine. Dann hätte der Hersteller aber auf die AMD-Opteron-2000-Serie mit DDR2-Support setzen müssen.

Auf dem Supermicro-Motherboard befinden sich zwei 64-Bit-Netzwerkkarten. Einer der vier 64-Bit-PCI-X-Steckplätze ist mit einer Dualport-Netzwerkkarte bestückt, ein weiterer mit einem Ein-Kanal-Raid-Controller. Letzterer erscheint auf den ersten Blick etwas altbacken, trägt keine Typenbezeichnung und wird noch über Jumper eingestellt. Laut Hersteller handelt es sich um einen ICP Vortex GDT8114RZ. Er versorgt zwei 73-GByte-Platten.

Eigenes Interface fürs Management

Zusätzlich gibt es einen PCI-Express-Steckplatz, den eine 32-Bit-Netzwerkkarte belegt. Von ihr sind geringere Durchsatzraten zu erwarten und der Hersteller empfiehlt diese folgerichtig zum OOB-Management (Out of Band, also über eigene Leitungen). Nicht mehr zeitgemäß ist das CD-ROM-Laufwerk in der Appliance. Es mag zwar für die Anwendung völlig ausreichen, dennoch würde ein DVD-Laufwerk besser zum hervorragenden Gesamteindruck passen.

Das System ist sehr professionell aufgebaut und verspricht gute Leistungswerte. Nur bei der Wahl der CPUs und des RAM verschenkt der Hersteller Punkte, die er im Wettstreit mit Asic-basierten Systemen gut brauchen könnte. (Norbert Landowski)

Auch die weitere Konfiguration geht schnell und intuitiv: Pool von realen Servern definieren (Abbildung 1), Healthcheck wählen, Routing zwischen realen Servern und Loadbalancer herstellen, VIP und Scheduling-Algorithmus wählen (Abbildungen 2 und 3), entscheiden, ob Sessions persistent auf ihrem Server bleiben müssen, und das Routing zwischen der VIP und den Clients herstellen.

 

Um in der Labor-Testumgebung auf den Webservern und der Appliance Last zu erzeugen, kam das bewährte Apache-Benchmarkingprogramm »ab« zum Einsatz. Es gehört zur Basisinstallation vieler Linux-Distributionen. Interessanterweise programmierte Adam Twiss 1996 die erste AB-Version; er ist einer der beiden Gründer der Firma Zeus. Seither pflegt die Apache Software Foundation das Tool. Zudem arbeitet Twiss seit einigen Jahren nicht mehr für Zeus. Daher ist sichergestellt, dass Zeus die Messwerte nicht manipuliert.

Wesentlich für den Test war nicht die reine Antwortzeit auf einen einzelnen Request. Ob der virtuelle Server in 0,4 oder 0,2 Millisekunden antwortet, bemerkt kein Anwender. Solche Verzögerungen gibt es im Internet immer. Viel wichtiger ist die Linearität der Messwerte, also dass der virtuelle Webserver zur Beantwortung von 200 gleichzeitigen Requests nur doppelt so lange braucht als für 100 und nicht plötzlich viermal so lange. Interessant war auch, ob es möglich ist, den Effekt von Connection Management durch Keepalives, HTTP-1.1-Kompression und intelligentes Caching nachzuvollziehen.

Gute Messwerte

Die Messungen in Abbildung 4 stammen vom Abruf einer 4 KByte großen Webseite aus einem Cluster mit zwei Apache-Servern (Abbildung 5) auf gewöhnlicher PC-Hardware. Die Last stieg von 100 auf 1000 gleichzeitige (concurrent) HTTP-Requests. Diese Testbedingungen sind, verglichen mit E-Commerce-Webseiten im realen Einsatz, recht gering. Ein Spitzenprodukt wie die Zeus ZXTM 7400 muss auch 50 000 bis 100 000 HTTP-Requests pro Sekunde verkraften.

 

 

Nach Herstellerangaben schafft die Appliance bis zu 92 000 HTTP-Requests pro Sekunde. Das ließ sich in der Testumgebung zwar nicht überprüfen, die interessanten Effekte zeigen sich aber bereits vor der 1000-Grenze. Viele CGI-Skripte und Webapplikation verhaken sich schon bei 70 oder 100 gleichzeitigen Abrufen, statt wie erhofft mit linear steigenden Antwortzeiten zu reagieren.

Die Messwerte zeigen, dass Keepalives nur wenig Vorteil bringen, wenn sie der Loadbalancer nur in den Verbindungen zu den Servern nutzt. Erst wenn er sie auch Client-seitig aktiviert, lässt sich der positive Einfluss gut belegen. Hierbei öffnet die Appliance nur einige wenige Verbindungen zu jedem realen Server und wickelt alle Anfragen über diese bereits geöffneten Connections ab.

Auch der Content-Cache führte zu einer deutlichen Verbesserung der Messwerte. Eine nennenswerte Steigerung durch HTTP-1.1-Kompression war dagegen nicht nachzuweisen; das lag aber vermutlich an der HTTP-Implementierung in »ab« und der reichlich vorhandenen Netzwerkbandbreite.

Reine Performancewerte haben an Bedeutung verloren, da sich die meisten Loadbalancer hierin kaum unterscheiden. Ob einer 92 000 oder 100 000 Requests pro Sekunde schafft, ist kaum relevant. Zudem sind die Herstellerangaben schwer vergleichbar. Bei Asic-Systemen gelten die Zahlen für Layer-4-Loadbalancing, während die Produzenten von PC-basierten Systemen ihre Leistungsfähigkeit lieber auf Layer 7 demonstrieren. Viel wichtiger sind Flexibilität, Features und Stabilität. Intelligente Loadbalancer greifen heute tief in die Datenkommunikation und auf Wunsch sogar in die ausgelieferten Inhalte ein.

Optimierung per Skript

In dieser Disziplin glänzt Zeus mit seinem so genannten Trafficscript. Für einfache Aufgaben wie das Evaluieren der HTTP-Headerfelder gibt es im Browser-basierten GUI einen Rule-Builder-Wizard (Abbildung 7). Wer höhere Ansprüche hat, schreibt die Regeln selber. Dabei gibt ihm eine 154 Seiten starke Referenz Auskunft. Das fertige Skript kopiert er in das Web-GUI der Appliance.

 

Bei Trafficscript handelt es sich um eine vollwertige Skriptsprache, die anhand der Informationen aus den OSI-Schichten 3 bis 7 bequem Entscheidungen fällen und Daten ändern kann. Zeus unterscheidet zwischen Request-Rules für die hereinkommenden Anfragen und Response-Rules für die Antworten der realen Server. Das folgende Beispiel zieht Informationen aus Layer 7 (hier die URL »/downloads«) und setzt daraufhin einen Layer-3-Parameter (das TOS-Bit im IP-Header; TOS: Type of Service). Dabei bleibt das Skript lesbar und verschont den Admin vor der Komplexität der beteiligten Protokolle:

$url = http.getPath();
if (string.startsWith ($url, "/downloads"))
{
    response.setToS ("THROUGHPUT");
}

Wenn diese Regel an einen virtuellen Server gebunden ist, über den ein Client eine URL abfragt, die mit »/downloads« beginnt, dann markiert die Appliance alle zu dieser Verbindung gehörenden IP-Pakete mit dem TOS-Bit für Throughput. Das Ziel ist maximaler Durchsatz für Download-Dateien. Die Markierung wirkt sich zwar nur auf die eigene Internetverbindung aus, das genügt aber oft schon. Auch zeigt das Beispiel, dass der Hersteller hier ein sehr universelles Mittel anbietet, das die Layer 3 bis 7 verbindet und beeinflusst.

Weitere Einsatzszenarien wären: das Copyright-Datum auf allen ausgelieferten Webseiten ändern, Meta-Tags einfügen, HTTP-Header auswerten (User-Agent, Accept-Language …) oder die Bandbreite von Downloads beschränken. Zeus verteilt nicht nur die Last, die Appliance schützt die realen Server auch vor übermäßiger Belastung. Die Techniken hierfür reichen von simplen White- und Blacklisten bekannter Clients über Connection Limiting (maximale Anzahl der Verbindungen pro Client) und Prüfungen des HTTP-Headers bis zu beliebigen Regeln, implementiert in Trafficscript.

Beste Balance

Die Zeus-Appliance ZXTM hat die Tester beeindruckt durch ihre Flexibilität, einfache Konfiguration und die hervorragenden Messwerte. Sie belegen, dass dank Web Application Optimization ein Cluster mehr ist als die Summe seiner Server. Besonders Trafficscript gewährt enorme Einflussmöglichkeiten.

Lediglich bei IPv6 fällt Zeus im Vergleich zu F5 und Nortel Networks zurück. Während die Konkurrenz bereits mit vollem IPv6-Support wirbt, muss Zeus auf künftige Releases vertrösten, ohne konkrete Zeitangaben. Andererseits ist der Hersteller mit GSLB (siehe Kasten “Globale Sicht”) auf dem besten Wege, seine Produktschiene in die Spitzenliga auszudehnen. Auch die Hardware leistete sich kaum Schwächen und verdient die Note “sehr gut”. Dem harmonisch und durchdacht aufgebauten System ist viel Stabilität zuzutrauen.

Globale Sicht

Nur für ganz große Sites gedacht ist das so genannte Global Server Loadbalancing, GSLB. Hier gilt es, Anfragen von Clients auf geografisch getrennte Rechenzentren zu verteilen, damit der Webauftritt auch im Katastrophenfall verfügbar bleibt. Zusätzlich profitieren die Clients von dem Luxus, die Antwort aus dem für sie am schnellsten erreichbaren Rechenzentrum zu erhalten. Auch adaptive Content Delivery Networks (CDNs) kommen an GSLB nicht vorbei.

Auf DNS-Umwegen

Die Technologie setzt darauf auf, dass Clients die Host- und Domainnamen der Webauftritte zuerst mit DNS-Abfragen zu IP-Adressen auflösen. Der DNS-Server gibt die Anfrage an den Loadbalancer weiter, der als »CNAME«- oder »IN A«-Record die VIP (virtuelle IP) des aktuell besten Rechenzentrums heraussucht. Diese Technologie hat nur eine Schwäche: Der Loadbalancer sieht den anfragenden Client nicht direkt, sondern nur die Anfrage des vom Client beauftragten Nameservers. Er ermittelt folglich die beste VIP für den Nameserver des Clients und hofft, dass Client und Nameserver möglichst nahe beisammen stehen. Diese Annahme ist in der Regel berechtigt, da den Clients ebenso wie den Netzbetreibern daran liegt, die DNS-Server nahe bei den Clients aufzusetzen.

GSLB wird nicht zum Funktionsumfang der ZXTM-Appliance-Serie gehören, Zeus kündigt für Sommer 2007 vielmehr eine eigene Appliance an. Abbildung 8 zeigt einen Screenshot des noch nicht vermarkteten Produkts, wobei das Tool die Anfragen der Clients über vier geografisch getrennte Rechenzentren zuordnet. Jedes hat eine eigene Farbe und das Interface färbt den geografischen Ort des Clients passend zum zuständigen Rechenzentrum. Die Ansicht nennt sich Proximity Map.

 

Mit der ZXTM 7400 steht dem Admin ein universelles Gerät zur Verfügung, das alle Facetten der Lastverteilung im Webserver-Cluster beherrscht und vom simplen Layer-4-Switching bis zum tiefen Eingriff in den HTTP-Datenstrom und sogar die HTML-Dokumente alles anbietet, um im Web die Balance zu halten. (fjl)

Infos

[1] Zeus: [http://www.zeus.com]

[2] Pyramid: [http://www.pyramid.de]

[3] Dan Kegel, “The C10K problem”: [http://www.kegel.com/c10k.html]

Der Autor

Jörg Fritsch studierte Chemie und arbeitete in den Bereichen Software-Entwicklung und IT-Sicherheit. Seit 2003 ist er Engineer Communication & Information Security bei der Nato-C3-Agentur. Er ist außerdem Autor zahlreicher Fachbeiträge zu Loadbalancing, TCP/ IP und Security.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben