Stabilität ahoi! Load Balancing mit neuer Serverarchitektur

with Keine Kommentare

Hallo liebe Leser!

Vor gut einer Woche gingen wir mit einer großen Ankündigung über Mail und Facebook an die Masse, um die Alphaversion der App an den Studierenden zu bringen. Und kaum war das geschehen, wurden wir mit unserer ersten Überlastung belohnt. 100% Auslastung: der Server stürzte ab. Dies war aber auch absehbar, denn bis gestern lief das gesamte Backend nur auf einer virtuellen Maschine, die allein natürlich nicht besonders belastbar ist.

Nun aber stellen wir um und lassen die Abfragen über mehrere VMs verteilen. Momentan sind es zwei, jedoch stocken wir zeitnah mit einer dritten auf. Das ganze kann man sich in etwa so vorstellen:

Serverarchitektur simpel

 

Dies ist eine vereinfachte Version unserer Serverarchitektur (ohne genaue Portangaben o.ä.), welche die Interaktion zwischen den jeweiligen Modulen darstellen soll. Auf jeder der VMs laufen Docker-Container, die miteinander interagieren. So ist beispielsweise nginx dafür verantwortlich, dass der Blog läuft. Dahingegen läuft das Deployment über Jenkins: Wenn wir eine neue Version des Servers veröffentlichen, testet Jenkins diese auf Fehler und verbreitet sie dann. Wenn wir auf die Oberfläche von Jenkins zugreifen wollen, ist nginx noch als Proxy davor gelegt. Wildfly stellt unser eigentliches Backend zur Verfügung, denn dort findet man unsere API-Schnittstelle, mit der wir alle Abfragen handhaben.

Neu hinzugekommen ist HAProxy, unser neuer Load Balancer. Dieser bestimmt, wenn eine Anfrage an den Server ankommt, welche VM damit belastet wird. Derzeit wird nach dem Round-Robin-Verfahren die Last verteilt: Die erste Anfrage geht auf die erste VM, die zweite auf die zweite und so weiter. Dies sorgt dafür, dass die Maschinen gleichermaßen belastet werden. Außerdem erlaubt uns HAProxy ein genaueres Monitoring der verschiedenen VMs, das heißt also, wenn einer der Server noch einmal abstürzen sollte, kann man dies schnell entdecken und entsprechend reagieren.

Wir können noch nicht sagen, ob zwei oder drei miteinander verknüpfte VMs reichen, um 1000 Erstsemester bei der Evaluation von BWL1 auszuhalten, jedoch werden wir unser Bestes tun, dass das möglich sein wird.

Deine Gedanken zu diesem Thema