Jede Anwendungskomponente des von uns geschriebenen Dienstes benötigt einige Ressourcen, um ordnungsgemäß ausgeführt zu werden und zu funktionieren. Es ist fast unmöglich, genau vorherzusagen, wie viel Ressourcen benötigt werden, da es viele bewegliche Teile gibt, die sie beeinflussen können. Die benötigte Speicher-, CPU- oder Netzwerkbandbreite kann sich mithilfe des Anwendungslebenszyklus ändern, wenn sich das Arbeitsvolumen ändert. Fast alle Anwendungen haben Leistungsanforderungen, die wir immer erfüllen müssen. Wenn sich die Arbeitslast ändert, müssen wir in der Lage sein, das gewünschte Leistungsniveau aufrechtzuerhalten. Hier kommt Azure Autoscale ins Spiel, da es sich um einen Mechanismus handelt, mit dem wir dies erreichen können.

 

Autoscaling

In Abbildung 1 unten finden Sie die Anwendungslast und die Gesamtgrenze der Ressourcen. Wenn die automatische Skalierung nicht vorhanden ist, können die Benutzer, die verbunden sind, und die Benutzer, die eine Verbindung mit der Webanwendung herstellen werden, aufgrund der Einschränkung der verfügbaren Ressourcen mit Leistungsproblemen konfrontiert sein, und er erreicht den Schwellenwert, wie in Abbildung 1.2 und kann den Verkehr nicht bewältigen. Wenn Sie sich jedoch Abbildung 2 ansehen, können Sie bei Datenverkehr und Anwendungsauslastung sehen, dass die verfügbaren Ressourcen gleichzeitig ansteigen. Dies ist der Vorteil der automatischen Skalierung.

 

Azure Autoscale-Szenario im Leerlauf

Abbildung 1

 

Azure Autoscale-Schwellenwert

Abbildung 1.2

 

Abbildung 2

 

Computelösungen in Azure

  • App-Service. Azure App Service ist ein vollständig verwalteter Webhostingdienst zum Erstellen von Web-Apps, mobilen Back-Ends und RESTful-APIs. Von kleinen Websites bis hin zu global skalierten Webanwendungen bietet Azure die Preis- und Leistungsoptionen, die Ihren Anforderungen entsprechen.
  • Azure Cloud Services. Azure Cloud Services ist ein Beispiel für eine Plattform als Dienst (PaaS). Wie Azure App Service unterstützt diese Technologie Anwendungen, die skalierbar, zuverlässig und kostengünstig zu bedienen sind. Sie können Ihre eigene Software auf VMs installieren, die Azure Cloud Services verwenden, und Sie können remote darauf zugreifen.
  • Azure Service Fabric. Azure Service Fabric ist eine verteilte Systemplattform, die das Paketieren, Bereitstellen und Verwalten skalierbarer und zuverlässiger Microservices und Container erleichtert. Service Fabric stellt die Plattform der nächsten Generation für den Aufbau und die Verwaltung dieser Anwendungen der Enterprise-Klasse, der Ebene 1 und der Cloud-Ebene dar, die in Containern ausgeführt werden.
  • Azure-Funktionen. Azure Functions ermöglicht Entwicklern das Handeln, indem sie eine Verbindung zu Datenquellen oder Messaginglösungen herstellen, wodurch die Verarbeitung und Reaktion auf Ereignisse erleichtert wird. Entwickler können Azure Functions nutzen, um HTTP-basierte API-Endpunkte zu erstellen, auf die eine Vielzahl von Anwendungen, Mobilgeräten und IoT-Geräten zugreifen kann.
  • Virtuelle Maschinen. Mit dem virtuellen Azure-Computer können wir virtuelle Computer in der Cloud als Infrastructure as a Service erstellen und verwenden. Wir können ein von Azure oder partner bereitgestelltes Image verwenden, oder wir können unser eigenes verwenden, um die virtuelle Maschine zu erstellen.

 

Typen der automatischen Skalierung

Vertikale automatische Skalierung

Vertikale Skalierung bedeutet, dass wir die Größe einer VM ändern. Wir skalieren, wenn wir eine größere VM benötigen, die über mehr Hardwareressourcen verfügt, und auf der anderen Seite skalieren wir herunter, falls wir nicht alle verfügbaren Ressourcen benötigen und die Größe einer VM verringern möchten. Unsere Anwendung, die in dieser VM gehostet wird, bleibt in beiden Fällen unverändert. Diese Art der Skalierung ist nicht sehr effizient, insbesondere in der Cloudumgebung, da der Ressourcenverbrauch nicht optimiert ist. Ein weiterer Hauptnachteil ist, dass die virtuelle Maschine angehalten werden muss, damit sich ihre Größe ändert. Dies wirkt sich auf unsere Anwendung aus, da sie offline geschaltet werden muss, während die VM angehalten, in der Größe geändert und neu gestartet wird, und diese Aktionen sind in der Regel zeitaufwändig. Natürlich könnten wir unsere VM unverändert lassen, aber stattdessen eine neue virtuelle Maschine mit der gewünschten Größe bereitstellen und unsere Anwendung verschieben, sobald die neue VM bereit ist. Dies erfordert immer noch, dass unsere Anwendung offline ist, während sie sich bewegt, aber der Prozess des Verschiebens der App ist viel kürzer.

vertikale Skalierung

Abbildung 3

 

vertikale Skalierungsanwendung nicht verfügbar

Abbildung 3.1 – Die Anwendung ist nicht mehr verfügbar, wenn die vertikale Skalierung eingerichtet wird, da der Neustart einige Zeit in Anspruch nimmt.

 

Horizontale Automatische Skalierung

Horizontale Skalierung bedeutet, dass wir die Anzahl der ausgeführten VMs ändern und die gewünschte Leistung beibehalten, indem wir die Last auf mehrere Instanzen derselben VM aufteilen. Die Größe der virtuellen Maschine bleibt gleich. Wir erhöhen die Anzahl nur, indem wir sie horizontal erhöhen, oder wir verringern die Anzahl der ausgeführten VMs in einem Moment, indem wir sie vergrößern. Mit diesem Ansatz können wir mit einer kleinen VM-Größe beginnen und den Ressourcenverbrauch so optimal wie möglich halten. Außerdem gibt es keine Ausfallzeiten für unsere Anwendung, da immer mindestens eine Instanz der App ausgeführt wird. Die horizontale Skalierung erfordert einen Load Balancer, um die Last gleichmäßig auf laufende VMs zu verteilen. Aber zum Glück für uns, Azure tut dies aus dem Kasten heraus mit null Aktion von unserer Seite benötigt.

 

horizontale Skalierung

Abbildung 5. Skaliert, wenn der Verkehr zunimmt.

 

Horizontaler Skalierungsverkehr nimmt ab

Abbildung 5.1 – Horizontal, wenn der Datenverkehr abnimmt.

 

Überwachung und Warnungen

Es gibt viele Möglichkeiten, wie Sie überwachen können, ob einem Dienst zusätzliche Ressourcen in Azure hinzugefügt werden, von denen einige recht kompliziert sind, z. B. das Scaling-Blade eines Dienstes (in diesem Fall Skalierungssätze für virtuelle Maschinen, Abbildung 6). Dies ist eine Methode, die von Administratoren bevorzugt wird, aber nicht von den Eigentümern und Mitwirkenden. Damit die Benutzer anzeigen können, müssen wir beim Azure-Portal angemeldet sein, was für die Benutzer sehr zeitaufwändig sein kann.

Vm-Skalierungssätze für virtuelle Maschinen

Abbildung 6

 

Warnungen

Sie können Benutzer benachrichtigen, wenn die automatische Skalierung und Skalierung in geschieht (App-Dienst).

 

Azure Autoscale-Warnungen

Abbildung 7

 

Standardmäßig werden Anwendungseinblicke für den App-Dienst verwendet, der uns Einblicke in die Reaktionszeit des Servers, Anforderungen usw. gibt.

 

Anwendungseinblicke

Abbildung 8. Application Insights zeigt die durchschnittliche Serverantwortzeit mit den Anforderungen an, die ein App-Dienst empfängt.

 

So konfigurieren Sie die automatische Skalierung in einem App-Dienst. Wechseln Sie zunächst zu Scale-out > Configure Add Scale Condition Wählen Sie die entsprechende > > Metrik wie CPU, RAM, Anforderungen usw. aus. > Speichern und es ist getan.

 

Konfigurieren der automatischen Skalierung

Abbildung 9. Konfigurieren der Bedingungen für die automatische Skalierung in einem App-Dienstplan

 

Wenn Sie Azure Autoscale verwenden, müssen Sie sich keine Gedanken darüber machen, wie Load Balancer, Traffic Manager usw. implementiert werden. Azure verwaltet alles.

Hinweis: Eigenständige VMs benötigen eine zusätzliche Konfiguration. Vmscale-Sets erfordern jedoch keine administrativen Maßnahmen beim automatischen Skalieren. Load Balancer werden automatisch erstellt.

Azure App Services verfügen über eine blinde automatische Skalierungsmethode, die von Azure verarbeitet wird und in den Ressourcen kein Dienst einzeln verwendet wird. Stattdessen werden alle administrativen Overheads entfernt. Benutzer fühlen sich wenig bis gar keine Leistungsprobleme im Auge behalten die automatische Skalierung erreicht wird. Azure verarbeitet den größten Teil des teils der automatischen Skalierung, abgesehen von der Angabe der Bedingungen für die automatische Skalierung, für den Benutzer bleibt nicht mehr viel übrig. Alles wird reibungslos gehandhabt.

Autoscale-Laufverlauf

 

In Abbildung 10 gibt es einen VMSS (Virtual Machine Scale Sets), der automatisch skaliert wird, wenn sich die von Ihnen erwähnten Bedingungen als wahr erweisen.

 

VmScale Sets mit Load Balancer

Abbildung 10. VmScale Sets mit Load Balancer.

 

 

Testen von Azure Autoscale

Testen ist ein integraler Bestandteil einer Webanwendung. Ohne Tests können wir nicht sicher wissen, ob der Webserver den Datenverkehr verarbeiten kann, denn wir führen Tests durch. Stresstests, Belastungstests sind die wenigen Beispiele für Tests. Damit es ausschließlich in Azure behandelt wird, melden Sie sich für eine DevOps-Organisation im Azure-Portal an, erstellen Sie ein Projekt, und anschließend werden Sie auf die folgende Seite weitergeleitet:

 

Azure DevOps-Dashboard

Abbildung 11. DevOps-Dashboard zum Testen

 

Azure DevOps-Testplan

Abbildung 12. Sie können URLs zu Testzwecken hinzufügen und sich die Metriken des Dienstes ansehen, der zum Testen verwendet wird.

 

Durchschnittlicher CPU-Prozentsatz nach Instanz

Abbildung 13. CPU-Diagramm der getesteten Anwendung, die sich auf dem virtuellen Computer befindet.

 

Beispielergebnisse GET API

Abbildung 14. Beispielergebnisse für eine GET-API mit Details wie Antwortzeit, Benutzerauslastung, Anforderungen pro Sekunde usw.

 

Verwenden von LoadView zum Überprüfen, ob Azure Autoscale ordnungsgemäß funktioniert

Wie wir inzwischen wissen, erfolgt die automatische Skalierung, wenn eine Menge CPU, RAM und IO erreicht ist. Hier in Abbildung 15 wird dieses Diagramm in einem Bericht enthalten, der von LoadView bereitgestellt wird, wenn Sie einen Test für eine bestimmte URL oder einen bestimmten Endpunkt ausführen. Das erste Diagramm hat eine konstante Anzahl von Benutzern, die die Website gemäß unserer Auslastungsteststrategie besuchen, und so danach erhöht sich die durchschnittliche Reaktionszeit erheblich.

LoadView Durchschnittliche Antwortzeit ohne automatische Skalierung

Abbildung 15. Durchschnittliche Reaktionszeit ohne automatische Skalierung

 

Mit der automatischen Skalierung ergeben sich jedoch Vorteile. Wenn die Benutzer in Abbildung 16 zunehmen, wird unsere Instance, die die Webanwendung hostet, gemäß den Bedingungen horizontal hochskaliert, sodass die durchschnittlichen Antwortzeiten nach Abschluss der automatischen Skalierung nicht beeinträchtigt werden. Wenn Benutzer nicht mehr verbunden sind, werden die Instanzen beendet, die für die Behandlung der unvorhersehbaren Last erstellt wurden, und nur die anfängliche Anzahl bleibt erhalten.

 

LoadView Durchschnittliche Antwortzeit mit automatischer Skalierung

Abbildung 16. Durchschnittliche Reaktionszeiten mit Autoscale

 

In Abbildung 17 bietet der von LoadView bereitgestellte Auslastungstest eine Möglichkeit, die App mithilfe von Sitzungen zu testen, wenn Sitzungen immer größer werden, was bei ordnungsgemäßen Tests hilft und ob die App automatisch skaliert wird oder nicht.

LoadView kumulative Sitzungen

Abbildung 17. Die Anzahl der kumulativen Sitzungen

 

Testen von Azure Autoscale: Schlussfolgerung

Wenn Sie Microsoft Azure Autoscale implementieren, müssen Sie sich keine Gedanken darüber machen, wie Load Balancer, Traffic Manager usw. implementiert werden. Azure verwaltet alles und stellt sicher, dass die richtige Menge an Ressourcen ausgeführt wird, um die Last Ihrer Anwendungen zu bewältigen. Durch die Verwendung einer Lösung wie LoadView wird jedoch sichergestellt, dass Autoscale ordnungsgemäß ausgeführt wird und dass ihre Benutzer beim Hinzuladen von Ressourcen keine Leistungseinbußen erfahren.

Probieren Sie LoadView selbst aus und erhalten Sie 20 $ in Auslastungstest-Credits, um zu starten.