Lastverteilung bei InnoGames

Lesezeit
2 Minuten
Bis jetzt gelesen

Lastverteilung bei InnoGames

28.07.2021 - 14:00
Veröffentlicht in:

InnoGames ist ein deutscher Entwickler von Mobile- und Onlinespielen und für "Forge of Empires", "Elvenar" und "Die Stämme" bekannt. 6500 virtuellen Maschinen laufen auf 350 Hypervisoren und sind auf drei Rechenzentren verteilt, in Spitzenzeiten fallen 1,8 Millionen Anfragen pro Stunde an. Dies erfordert rund um die Uhr Überblick über die Verteilung und Nutzung systemkritischer Ressourcen. Der Anwenderbericht stellt anhand realer Projektbeispiele einen Ansatz vor, um Lastverteilung zu optimieren und Steal Time in überlasteten Hypervisoren proaktiv und durch Automatisierung zu vermeiden.

Als Hobby gestartet, beschäftigt InnoGames heute mehr als 400 Mitarbeiter aus über 30 Nationen. Das gesamte Portfolio umfasst sieben Live-Spiele und mehrere Mobile-Games. Um Millionen von täglichen Zugriffen auf die eigenen Server zu handhaben, braucht es stabile Systeme. Es ist wichtig, sich zu jeder Zeit einen Überblick über die Verteilung und Nutzung von systemkritischen Ressourcen verschaffen zu können, um dadurch mögliche Engpässe zu vermeiden.

Der Beginn des Anwenderberichts stellt die IT-Umgebung von InnoGames vor. Der zweite Abschnitt beschreibt den Lastverteilungs-Algorithmus, der durch inkrementelle Verbesserung das Problem von schlecht verteilten Ressourcen lösen soll.

Hypervisoren an der Belastungsgrenze
6500 virtuelle Maschinen laufen auf 350 Hypervisoren und sind über drei Rechenzentren auf der Welt verteilt. Zu Peak-Zeiten verzeichnen die Server 1,8 Millionen Anfragen pro Stunde. Ziel ist es, diese Last kann durch proaktives Umverteilen der virtuellen Maschinen gleichmäßig über die Hardware zu verteilen. Im Idealfall lassen sich täglich auftretende Schwankungen und der Einfluss von plötzlich auftretenden Ereignissen somit minimieren und ein flüssiges Spielerlebnis gewährleisten.

Jedes der Spiele hat ein unterschiedliches Auslastungsprofil. Die generelle Spitzenlast tritt täglich um 20 Uhr auf, jedoch erzeugen spezielle Events in den Spielen selbst deutlich mehr Last. Diese Events variieren zwischen den Spielen und starten zu unterschiedlichen Zeiten an unterschiedlichen Wochentagen. Hinzu kommt, dass durch regelmäßige Wartungsarbeiten an den Servern ein Teil der Hypervisoren evakuiert wird. Dabei ziehen virtuelle Maschinen auf Basis von speziellen Kriterien auf andere Hypervisoren um. Die von der IT-Abteilung genutzten Tools stellten allerdings kein Feature für die optimale Verteilung bereit.

In der beschriebenen Umgebung kam es dann in der Vergangenheit nicht selten dazu, dass einige Hypervisoren an ihre Auslastungsgrenzen stießen. Da sich die CPU-Performance durch starke Nutzung durch die Hypervisoren bei aktiviertem Hyperthreading bereits vor der maximalen Auslastung zu verschlechtern beginnt, ist es besonders wichtig, Überlastungen zu vermeiden. Zu den größten Performance-Einbußen bei den Spielen kommt es dadurch, dass virtuellen Maschinen nicht die eigentlich benötigte CPU-Zeit auf ihrem Host bekommen (Steal Time). Je näher der Hardware-Server an seine CPU-Grenzen stößt, desto ausgeprägter zeigt sich diese Stealtime. Aus diesem Grund ist es wichtig, die Auslastung der Hypervisoren ständig zu überwachen und zu optimieren.

Graphite verschafft Überblick
Die größte Herausforderung bei der Lösung des beschriebenen Problems war es zunächst, sich eine Übersicht darüber zu verschaffen, wie die Verteilung der Ressourcen zu jeder Zeit aussieht. Um nachhaltig genügend Ressourcen auf den Hypervisoren freizuhalten, interessiert dabei nicht nur die CPU-Auslastung, sondern auch die Arbeitsspeichernutzung. Als Datenquelle kam in diesem Beispiel Graphite zum Einsatz, ein Open-Source-Tool für die Überwachung von Performancedaten.

 
Das Open-Source-Tool Graphite liefert eine Übersicht zur Auslastung der einzelnen Hypervisoren.
 

Die von Graphite generierte Skala vermittelt bereits einen guten Eindruck über die allgemeine Verteilung und Nutzung der Ressourcen. Auf der Y-Achse ist die freie CPU-Kapazität der jeweiligen Hypervisoren in "Performance-Value" abgebildet. Dadurch, dass häufig unterschiedliche Hardwaremodelle zum Einsatz kommen, kann dem Vergleich nicht die prozentuale CPU-Auslastung zugrunde liegen. Der "Performance Value" setzt sich aus der maximalen Load eines Hypervisors, der Anzahl der CPU-Kerne und einem Performancefaktor zusammen. Dieser Faktor ermöglicht es, die unterschiedlichen Hardwaremodelle in Relation zu setzen.

Auf der X-Achse lässt sich die Auslastung des Arbeitsspeichers in GByte ablesen. Jeder Punkt auf dem Graphen repräsentiert somit einen Hypervisor mit seiner CPU- und Arbeitsspeicherauslastung. Punkte, die sich weit oben und nah der Y-Achse befinden, haben also viel CPU-Leistung frei, aber keinen Arbeitsspeicher.

Für eine noch bessere Visualisierung lässt sich der Durchschnitt von CPU und Memory aller Server berechnen und mit Hilfe eine Linie darstellen. Der Schnittpunkt ist die "optimale" Verteilung. Der Kreis kennzeichnet einen Toleranzbereich. Ziel ist es, im nächsten Schritt durch Migrationen der virtuellen Maschinen jeden Hypervisor in diese Schnittmenge zu manövrieren.

 


ln/Konstantin Beste, Systemadministrator bei InnoGames
 

 

Ähnliche Beiträge

Windows Server 2019: Erstellen und Verwalten von Snapshots (3)

Snapshots, oder auch Prüfpunkte, sichern VMs vor Konfigurationsänderungen oder dienen als Backup. Im Idealfall lassen sich VMs damit bei Problemen in wenigen Sekunden in den ursprünglichen Zustand zurücksetzen. Produktionsprüfpunkte berücksichtigen bei dieser Art der Sicherung sogar die aktuellen Workloads. Wir zeigen, wie Sie optimal mit Prüfpunkten arbeiten und dabei serverseitige Leistungseinbrüche verhindern. Im dritten und letzten Teil der Workshopserie erklären wir, wie sie Prüfpunkte richtig löschen und was beim Sonderfall Hyper-V-Cluster zu beachten ist.

Seite 2 - Windows Server 2019: Erstellen und Verwalten von Snapshots (2)

Prüfpunkte in Hyper-V erstellen
Hyper-V ermöglicht das Erstellen von Prüfpunkten auch ohne dass Sie Zusatzanwendungen installieren. Den entsprechenden Befehl finden Sie im Kontextmenü der virtuellen Computer im Hyper-V-Manager. Auch über System Center Virtual Machine Manager lassen sich Snapshots aufnehmen.

Windows Server 2019: Erstellen und Verwalten von Snapshots (2)

Snapshots, oder auch Prüfpunkte, sichern VMs vor Konfigurationsänderungen oder dienen als Backup. Im Idealfall lassen sich VMs damit bei Problemen in wenigen Sekunden in den ursprünglichen Zustand zurücksetzen. Produktionsprüfpunkte berücksichtigen bei dieser Art der Sicherung sogar die aktuellen Workloads. Wir zeigen, wie Sie optimal mit Prüfpunkten arbeiten und dabei serverseitige Leistungseinbrüche verhindern. In der zweiten Workshop-Folge gehen wir darauf ein, wie Sie Leistungseinbrüche durch zu viele Snapshots vermeiden und Prüfpunkte in Hyper-V erstellen und verwalten.