Zu viele Benutzeranfragen? – Entlastung durch ein Load Balancing System

26.02.2021

Es war ein grauer Sonntag im November gegen 16 Uhr als plötzlich mein Handy klingelte. Panisch erzählt mir unser Kunde, dass sein Online Streaming Portal für niemanden mehr erreichbar sei. Unzählige Beschwerden prasselten von einer auf die andere Minute auf sein Supportteam ein.

Relativ schnell fanden wir zusammen auch den Grund. Zu viele Benutzer, die sich gleichzeitig auf dem Webportal befanden und das kostenpflichtige Videostreaming bezogen, führten dazu, dass nichts mehr ging. Eigentlich ein schönes „Problem“, denn viele Benutzer bedeuten natürlich auch viel Umsatz. Leider konnte jedoch keiner dieser umsatzträchtigen User die gekauften Inhalte abrufen, da der Server total überlastet war.

Das Online-Fitnessportal war relativ neu am Markt – mit so einer Konversionsrate hatte niemand gerechnet. Das Schließen der Fitnessstudios auf Grund der Coronapandemie hatte spontan zur Folge, dass sehr viele gesundheitsbewusste Menschen ihren Sport plötzlich online machen wollten.

Noch an demselben Sonntag, mussten wir schnell eine geeignete Lösung finden. Also trommelten wir das Team zusammen und setzten uns mit Jogginghose an die Laptops. Die einzige Lösung um diesem Trafficanstieg Herr zu werden, war das Hinzuschalten von zwei leistungsstärkeren dedizierten Servern. Ein sogenanntes Load Balancing sollte die Last gleichmäßig auf den Maschinen verteilen.

Ein Entwickler auf dem Sofa mit seinem Laptop

Was heißt eigentlich „Load Balancing“?

Load Balancing (Lastenverteilung) ist ein Verfahren um Anfragen auf mehrere voneinander unabhängige Systeme (in diesem Fall Webserver) zu verteilen. Dabei dient ein gesonderter Load Balancing Server als „Empfangsportal“ für alle User und leitet jede eingehende Anfrage auf einen der Webserver um. Der ausgewählte Server sendet die gewünschte Antwort wieder zurück an den Load Balancer, der wiederum das Ergebnis an den Benutzer weiterleitet.

Infografik, Schema des Load Balancing Prinzips

Zunächst hört sich dies vielleicht umständlich und wenig performant an. Das Verteilen der Lasten führt jedoch am Ende zu einer viel besseren Verfügbarkeit. Die Verarbeitungslast fällt nicht gebündelt auf einen Server, sondern wird gleichmäßig verteilt.

Ein Load Balancing System ist skalierbar – es können jederzeit weitere Server dazugeschaltet oder auch Defekte abgeschaltet werden, ohne dass der Benutzer davon etwas mitbekommt.

Schnelle Reaktion bei einem technischen Notfall

Leider konnte der Hosting-Dienstleister unseres Kunden so schnell keine weiteren Server zur Verfügung stellen. Deshalb gab uns der Geschäftsführer vorübergehend seine internen Testmaschinen frei. Wir entschieden uns bei dem Load Balancer für ein Nginx System.

Innerhalb der nächsten Stunden waren die zusätzlichen Server mit den nötigen Softwarepaketen ausgerüstet und jeder hostete ein identisches Abbild der aktuellen Liveversion des Webportals.

Jeder der neuen Server hatte nun auch eine eindeutige IP-Adresse. Die bei den Usern bekannte Domain wurde auf den Load Balancing Server verwiesen.

Ohne das die Benutzer es bemerkten, wurden sie nun vom Load Balancing Server abgefangen und auf einen der leistungsfähigeren Server umgeleitet. Das Fitnessportal mit dem Videostreaming Angebot lief wieder einwandfrei und die Supportanfragen nahmen sofort ab.

Chaos nach dem Sturm - Nachteile des Load Balancing

Es wäre ein wenig zu heroisch, zu behaupten, dass mit dem Load Balancer alle Probleme unseres Kunden beseitigt gewesen wären. Ja, die schlimmste Krise wurde abgewandt. Ein entscheidender Nachteil machte sich aber schnell bemerkbar.

Ein paar Serverschränke

Die Webanwendung verwaltete alle Benutzerdaten natürlich über Sessions. In jeder Session wurden u.a. der aktuelle Trainingsstand und der Warenkorb gespeichert. Eine Session ist jedoch vom Server abhängig und es war nun schließlich Zufall, auf welchem Server der Benutzer bei seiner Anfrage landete. Das bedeutete, es konnte sein, dass seine Daten nach dem nächsten Aufruf weg waren.

Da dies zu neuen Problemen führte bildeten wir die Handhabung der Sitzungsdaten nachträglich komplett über die Datenbank ab.

Spezialfall Datenbanken
Greifen mehrere Server auf dieselbe Datenbank zu, kann es zu „Synchronisationsproblemen“ kommen. Dadurch wird die Komplexität des Load Balancing Konzeptes natürlich zusätzlich erhöht.

Solltet ihr über ein Load Balancing System nachdenken, beachtet diesen Aspekt bitte unbedingt vorher!

Dank unserer „nächtlichen“ Server-Umstellung, war unser Kunden nun in der Lage innerhalb kürzester Zeit neue Webserver hinzuzuschalten oder auszutauschen. Die Verfügbarkeit des Portals stieg dadurch auf 100%. Der Umsatz stieg in den ersten Monaten enorm an und die Plattform gewann immer mehr an Beliebtheit.

Falls du ähnliche Performanceprobleme mit deiner Webanwendung kennst und über eine Lastenverteilung auf mehrere Server nachdenkst, beraten wir dich gerne und helfen dir bei der technischen Umsetzung.

von Matthias Brigula

Ähnliche Beiträge

© 2024 — Violution GbR — #AusLeidenschaftDigital