Seite 2 - Lastverteilung bei InnoGames
Lastverteilungs-Algorithmus sorgt für Ausgleich
Die Herausforderungen war es nun, herauszufinden, welcher Hypervisor einer Entlastung bedarf, ohne manuell jeden einzeln überprüfen zu müssen. Um zu bestimmen, welche virtuellen Maschinen zu migrieren sind, bildete das IT-Team Kategorien. Eine Kategorie ist ein Quadrant des obigen Diagramms, sprich oben links befindet sich die Kategorie "viel_CPU_wenig_RAM" und unten rechts die Kategorie "wenig_CPU_viel_RAM". In der Abbildung ist zu erkennen, dass einige Hypervisoren zu wenig Arbeitsspeicher und gleichzeitig viele CPU-Ressourcen frei haben.
Im ersten Schritt ging es darum, so viele Hypervisoren wie möglich von links in die Mitte zu verschieben und somit die Arbeitsspeicherauslastung zu optimieren. Hierfür bildet die IT Migrationspaare aus den jeweils gegenüberliegenden Kategorien. Es wird also von "wenig", nach "viel" migriert, um einen Ausgleich herzustellen. Liegen alle Hypervisoren in dem Toleranzbereich für das RAM, beginnt die Optimierung der CPU-Last, indem von unten nach oben migriert wurde.
Dieser Ansatz lässt sich inkrementell umsetzen. Den Anfang machen die Hypervisoren, die in den Kategorien den größten Abstand zur Mitte des Kreises besitzen. Die Distanz zur Mitte setzt sich aus einem CPU- und RAM-Wert zusammen. Anhand dieser Daten ist erkennbar, welche virtuelle Maschine auf welchem Hypervisor wie viel Last erzeugt. Diese lässt sich dann nach Auslastung ordnen und zur Migration vorschlagen.
Die Entscheidung, welche Maschine umzieht, führt jedoch zu einem weiteren Problem: Die Spielwelten von InnoGames setzen sich aus redundanten Webservern und großen Datenbanken zusammen. Eine Datenbank zu migrieren, nimmt viel Arbeitsspeicher und CPU-Zeit in Anspruch. Dadurch, dass jedoch in vielen Fällen ein Server während einer Migration neugestartet werden muss, führt die Migration zu einer kurzen Downtime für die Spieler. In diesen Fällen gilt es abzuwägen, entweder mehrere redundante Webserver zu migrieren oder eine Datenbank.
Fazit
Der beschriebene Lastverteilungsprozess lässt sich vollständig automatisieren und sehr gut skalieren. Es bedarf vergleichsweise weniger Daten und die Berechnungszeiten sind sehr kurz. InnoGames hat diese Rebalancing-Strategie letztendlich durch eine Python-Applikation implementiert. Die Entscheidung, welche Server migriert werden sollen, war die größte Herausforderung bei der Entwicklung der Anwendung. Aber letztendlich berechnet die Software die Migrationen so, dass in den meisten Fällen sowohl der Quell- als auch der Ziel-Hypervisor im Toleranzbereich landen.
<< Vorherige Seite | Seite 2 von 2 |
ln/Konstantin Beste, Systemadministrator bei InnoGames