Netidee Blog Bild
Osmotische Skalierung und Platzierung
Wie wir Load Balancer Instanzen skalieren und platzieren (25.04.2022)
Förderjahr 2020 / Stipendien Call #15 / ProjektID: 5115 / Projekt: Improving Serverless Edge Computing for Network Bound Workloads

Wir haben viel darüber gesprochen wie Load Balancer in Serverless Systemen funktionieren, und welche Rolle sie spielen. Was allerdings nur angeschnitten wurde ist wie sie skalilert und platziert werden. Wie wir bereits früh erklärt haben ist die Positionierung von Load Balancern nahe an Clients und den entsprechenden Serverless Function Instanzen essenziell um die Leistung zu verbessern. Wie soll also entschieden werden wie viele Load Balancer erstellt, und wo sie platziert werden?

Um in einem Serverless Edge Computing Szenario nützlich zu sein muss die Lösung zum Skalieren und Platzieren eine Reihe von Anforderungen erfüllen. Die Lösung muss es erlauben die Skalierung, sprich die Anzahl an ausgeführen Instanzen, zu kontrollieren. Sie muss die Instanzen außerdem korrekt platzieren und sowohl Skalierung als auch Platzierung dynamisch an sich Ändernde Bedingungen anpassen.

Unsere Lösung ist vom biologischen Prinzip der Osmose inspiriert, osmotischem Druck im speziellen. Jede Node, also jeder Server im System, ist einem bestimmten osmotischem Druck ausgesetzt. Wird eine Grenze überschritten wird auf der Node eine Load Balancer Instanz erstellt. Der osmotische Druck wird berechnet indem wir mit statistischen Methoden abschätzen wie sehr sich die Gesamtperformance des Systems verbessern oder verschlechtern wird wenn auf einer Node eine Instanz erstellt wird. Diese relative Verbesserung ist der Druck. Nähe zu sehr aktiven Clients, sowie zu Funktionsinstanzen trägt maßgeblich zu einem hohen Druck bei. Analog zum positiven Druck, welcher bestimmt wie viele und wo Load Balancer platziert werden gibt es negativen Druck, welcher bestimmt ob Load Balancer wieder entfernt werden. Die Berechnung erfolgt analog: Sollte das Entfernen eines Load Balancers zu einer erwarteten Verbesserung der Gesamtperformance führen, wird die Instanz entfernt. Die Grenzen für das Hinzufügen und Entfernen von Load Balancern ist ein Parameter, das frei konfiguriert werden kann. Darüber kann indirekt kontrolliert werden wie viele Load Balancer erstellt werden. Je niedriger die Grenze, desto leichter wird ein Load Balancer erstellt. Hierüber kann kontrolliert werden wie weit das System geht um die Antwortzeit zu optomieren. Je mehr Load Balancer im System sind desto geringer wird, allgemein gesprochen, die mittlere Antwortzeit auf Anfragen. Mit einer erhöhten Anzahl an Load Balancern geht allerdings auch ein größerer Ressourcenverbrauch einher. Welche Einstellung hier richtig ist, kommt auf den Anwendungsfall an.

Wir haben unsere Herangehensweise in unterschiedlichen Szenarien evaluiert, und sie erfüllt die vorhin beschriebenen Anforderungen ausgesprochen gut. Sie hat allerdings auch Limitationen, besonders was das Entfernen von Instanzen betrifft. Darüber hinaus brauch die Lösung nach wie vor zumindest manuell eingestellte Parameter, und ist damit noch nicht vollständig autonom in ihrer Anpassung an die Systemumgebung. Für die genaue Evaluierung lade ich alle Interessierten dazu ein die fertige Arbeit zu lesen.

CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.

    Weitere Blogbeiträge

    Datenschutzinformation
    Der datenschutzrechtliche Verantwortliche (Internet Privatstiftung Austria - Internet Foundation Austria, Österreich) würde gerne mit folgenden Diensten Ihre personenbezogenen Daten verarbeiten. Zur Personalisierung können Technologien wie Cookies, LocalStorage usw. verwendet werden. Dies ist für die Nutzung der Website nicht notwendig, ermöglicht aber eine noch engere Interaktion mit Ihnen. Falls gewünscht, können Sie Ihre Einwilligung jederzeit via unserer Datenschutzerklärung anpassen oder widerrufen.