Allgemeine Muster für die automatische Skalierung
In dieser Lerneinheit betrachten wir Muster für die automatische Skalierung.
Die automatische Skalierung ist keine sofortige Lösung. Durch das einfache Hinzufügen von Ressourcen zu einem System oder das Ausführen mehrerer Instanzen eines Prozesses kann nicht sichergestellt werden, dass sich die Leistung des Systems verbessert. Beim Entwerfen einer Strategie für die automatische Skalierung sollten Sie folgende Punkte berücksichtigen:
Empfehlungen
Identifizieren von Engpässen: Die horizontale Hochskalierung ist kein Wundermittel für jedes Leistungsproblem. Wenn beispielsweise Ihre Back-End-Datenbank der Engpass ist, hilft das Hinzufügen weiterer Webserver nicht. Identifizieren und beheben Sie zuerst die Engpässe im System, bevor Sie weitere Instanzen einrichten, um das Problem zu lösen. Zustandsbehaftete Teile des Systems sind die wahrscheinlichste Ursache von Engpässen.
Unterteilen von Workloads nach Skalierungsanforderungen: Anwendungen bestehen häufig aus mehreren Workloads mit unterschiedlichen Anforderungen an die Skalierung. Eine Anwendung verfügt möglicherweise über eine öffentliche Site und eine separate Site für die Verwaltung. Auf der öffentlichen Website treten möglicherweise plötzliche Datenverkehrsspitzen auf, während die Verwaltungswebsite eine kleinere und besser vorhersehbare Last aufweist.
Lagern Sie ressourcenintensive Tasks aus: Tasks, die viele CPU- oder E/A-Ressourcen erfordern, sollten nach Möglichkeit in Hintergrundaufträge verschoben werden. Durch das Entladen von Tasks wird die Last auf dem Front-End minimiert, das die Benutzeranforderungen verarbeitet.
Verwenden integrierter Features für die automatische Skalierung: Weist eine Anwendung eine vorhersehbare, regelmäßige Workload auf, sollte das Hochskalieren gemäß einem Zeitplan erfolgen. Skalieren Sie das System z.B. während der Geschäftszeiten auf. Wenn die Workload nicht vorhersagbar ist, verwenden Sie andernfalls Leistungsmetriken wie CPU- oder Anforderungswarteschlangenlänge, um die automatische Skalierung auszulösen.
Erwägen einer aggressiven automatischen Skalierung für kritische Workloads: Bei kritischen Workloads sollten Sie der Nachfrage einen Schritt voraus sein. Es ist besser, bei hoher Last schnell neue Instanzen hinzuzufügen, um den weiteren Datenverkehr zu bewältigen, und dann schrittweise zurückzufahren.
Konzipieren Sie Ihr System so, dass es abskaliert werden kann: Denken Sie daran, dass es bei der elastischen Skalierung Zeiträume geben wird, in denen die Anwendung abskaliert wird, indem Instanzen entfernt werden. Die Anwendung muss die Entfernung von Instanzen ordnungsgemäß verarbeiten können. Hier sind einige Möglichkeiten zum Behandeln des Abskalierens:
- Die Anwendung sollte auf „Herunterfahren“-Ereignisse lauschen (wenn verfügbar) und das Herunterfahren ordnungsgemäß ausführen.
- Fügen Sie Unterstützung für die Behandlung vorübergehender Fehler und von Wiederholungsversuchen ein.
- Bei zeitintensiven Tasks sollten Sie die Arbeit aufteilen.
- Platzieren Sie Arbeitselemente in einer Warteschlange, sodass eine andere Instanz die Verarbeitung übernehmen kann, wenn eine Instanz während der Verarbeitung entfernt wird.
Benachrichtigungen
- Alle Fehler bei der automatischen Skalierung werden im Aktivitätsprotokoll protokolliert. Anschließend können Sie eine Aktivitätsprotokollwarnung konfigurieren, die Sie per E-Mail, SMS (Short Message Service) oder Webhooks benachrichtigt, wenn ein Fehler bei der Autoskalierung auftritt.
- Auf ähnliche Weise werden alle erfolgreichen Skalierungsaktionen im Aktivitätsprotokoll erfasst. Anschließend können Sie eine Warnung für das Aktivitätsprotokoll konfigurieren, damit Sie per E-Mail, SMS oder Webhook benachrichtigt werden, wenn eine erfolgreiche Autoskalierungsaktion durchgeführt wurde. Sie können in den Einstellungen für die Autoskalierung auf der Registerkarte Benachrichtigungen auch E-Mail- oder Webhook-Benachrichtigungen konfigurieren, um über erfolgreiche Skalierungsaktionen informiert zu werden.
Allgemeine Muster zum Skalieren Ihrer Ressource in Azure
Bedarfsbasierte Skalierung
Sie können die Anzahl der Dienstinstanzen zu Beginn des Arbeitstags, wenn die Kundennachfrage zunimmt, automatisch hochskalieren. Führen Sie am Ende des Arbeitstags automatisch eine Abskalierung der Anzahl der Anwendungsinstanzen durch, um die Ressourcenkosten über Nacht zu minimieren, wenn die Auslastung der Anwendung gering ist.
Individuelles Skalieren an Wochentagen ggü. Wochenenden
Es kann sein, dass die Nachfrage für Ihre Anwendung abends oder am Wochenende abnimmt. Wenn diese Last über einen bestimmten Zeitraum konsistent ist, können Sie Regeln für die Autoskalierung konfigurieren, um die Anzahl der Dienstinstanzen in der Skalierungsgruppe zu senken. Mit dieser Aktion zum Abskalieren werden die Kosten für die Ausführung Ihrer Skalierungsgruppe gesenkt, da Sie nur so viele Instanzen ausführen, wie zur Erfüllung der aktuellen Nachfrage erforderlich sind.
Individuelles Skalieren an Feiertagen
Wenn ein Dienst zu bestimmten Zeiten im Monat oder im Geschäftszyklus stark genutzt wird, können Sie die Anzahl der Dienstinstanzen automatisch skalieren, um die zusätzlichen Anforderungen zu erfüllen. Wenn es ein Marketingereignis, eine Werbeaktion oder einen Feiertagsverkauf gibt, können Sie die Anzahl der Dienstinstanzen automatisch vor der erwarteten Nachfrage der Kunden skalieren.
Skalieren basierend auf benutzerdefinierten Metriken
Schließlich sollten Sie Ihre Regeln für die automatische Skalierung sorgfältig festlegen. Beispielsweise führt ein Denial-of-Service-Angriff (DoS-Angriff) vermutlich zu einer starken Zunahme des eingehenden Datenverkehrs. Wird in diesem Fall eine automatische Skalierung für Anforderungsspitzen durchgeführt, wäre dies eine sinnlose und teure Maßnahme. Die Anforderungen sollten dann nicht verarbeitet, sondern verworfen werden, da sie nicht von echten Benutzern stammen. Eine bessere Lösung besteht darin, Maßnahmen zu implementieren, mit denen Anforderungen im Kontext eines solchen Angriffs erkannt und gefiltert werden, bevor sie auf Ihren Dienst treffen.
Überwachen Sie nach dem Konfigurieren der Regeln für die automatische Skalierung die Leistung Ihrer Anwendung im Laufe der Zeit. Verwenden Sie die Ergebnisse dieser Überwachung, um das Skalierungsmuster des Systems gegebenenfalls anzupassen.