Richtlinien zur schrittweisen Skalierung - Amazon ECS

Richtlinien zur schrittweisen Skalierung

Obwohl Amazon ECS-Service Auto Scaling die Nutzung von Application Auto Scaling-Richtlinien zur schrittweisen Skalierung unterstützt, empfehlen wir Ihnen stattdessen, die Skalierungsrichtlinie für die Zielverfolgung zu nutzen. Wenn Sie beispielsweise Ihren Service skalieren möchten, wenn die CPU-Auslastung unter oder über eine bestimmte Stufe fällt oder steigt, erstellen Sie eine Zielverfolgungsskalierungsrichtlinie basierend auf der von Amazon ECS bereitgestellten CPU-Auslastungsmetrik. Weitere Informationen finden Sie unter Skalierungsrichtlinien für die Ziel-Nachverfolgung.

Mit Schrittskalierungsrichtlinien erstellen und verwalten Sie die CloudWatch-Alarme, die den Skalierungsprozess auslösen. Wenn die Zielverfolgungsalarme für Ihren Anwendungsfall nicht funktionieren, können Sie die Schrittskalierung verwenden. Sie können auch die Zielverfolgungsskalierung mit Schrittskalierung für eine erweiterte Skalierungsrichtlinienkonfiguration verwenden. Beispiel: Sie können eine striktere Antwort konfigurieren, sobald die Auslastung ein bestimmtes Niveau erreicht.

Überlegungen zum Service Auto Scaling

Beachten Sie bei Verwendung von Skalierungsrichtlinien die folgenden Überlegungen:

  • Amazon ECS sendet Metrikdaten in einminütigen Intervallen an CloudWatch. Die Metriken sind nicht verfügbar, bis die Cluster und Services diese an CloudWatch senden und Sie können keine CloudWatch-Alarme für Metriken erstellen, die noch nicht existieren.

  • Die Skalierungsrichtlinien unterstützen eine Ruhephase. Das ist die Anzahl Sekunden, für die darauf gewartet wird, dass eine vorherige Skalierungsaktivität wirksam wird.

    • Bei Scale-out-Ereignissen wird eine kontinuierliche (jedoch nicht übermäßige) horizontale Skalierung nach oben angestrebt. Nachdem Service Auto Scaling unter Verwendung einer Skalierungsrichtlinie erfolgreich horizontal nach oben skaliert hat, beginnt es mit der Berechnung der Ruhezeit. Die Skalierungsrichtlinie erhöht die gewünschte Kapazität nicht erneut, es sei denn, es wird eine größere Skalierung ausgelöst oder der Cooldown-Zeitraum endet. Während die Scale-Out-Ruhephase wirksam ist, wird die durch die initiierende horizontale Skalierung nach oben (Scale-Out) hinzugefügte Kapazität als Teil der gewünschten Kapazität für die nächste horizontale Skalierung nach oben berechnet.

    • Bei Scale-In-Ereignissen wird eine vorsichtige horizontale Skalierung nach unten angestrebt, um die Verfügbarkeit Ihrer Anwendung aufrechtzuerhalten, sodass horizontale Skalierungen nach unten blockiert werden, bis die Ruhephase abgelaufen ist. Wenn jedoch während der Scale-In-Ruhephase ein anderer Alarm eine Scale-out-Aktivität auslöst, skaliert Service Auto Scaling das Ziel sofort horizontal nach oben. In diesem Fall wird die Scale-In-Ruhephase angehalten und nicht abgeschlossen.

  • Der ECS-Service-Scheduler respektiert die gewünschte Anzahl zu jeder Zeit, aber wenn auf einem Service Skalierungsrichtlinien und Alarme aktiv sind, könnte Service Auto Scaling eine gewünschte Anzahl, die von Ihnen manuell eingestellt wurde, ändern.

  • Wenn die gewünschte Anzahl eines Service unter seinem minimalen Kapazitätswert eingestellt ist und ein Alarm eine Aufwärtsskalierung auslöst, skaliert Service Auto Scaling die gewünschte Anzahl bis zu dem minimalen Kapazitätswert aufwärts und führt dann die Aufwärtsskalierung wie gefordert fort, basierend auf der dem Alarm zugeordneten Skalierungsrichtlinie. Eine Herunterskalierung wird jedoch die gewünschte Anzahl nicht anpassen, da der Wert bereits unter dem Wert für die minimale Kapazität liegt.

  • Wenn die gewünschte Anzahl eines Service über seinem maximalen Kapazitätswert eingestellt ist und ein Alarm eine Abwärtsskalierung auslöst, skaliert Service Auto Scaling die gewünschte Anzahl bis zu dem minimalen Kapazitätswert aufwärts und führt dann die Abwärtsskalierung wie gefordert fort, basierend auf der dem Alarm zugeordneten Skalierungsrichtlinie. Eine Aufwärtsskalierung passt jedoch die gewünschte Anzahl nicht an, da der Wert bereits über dem Wert für die maximale Kapazität liegt.

  • Während der Skalierungsaktivitäten ist die tatsächliche Anzahl der laufenden Aufgaben in einem Service der Wert, den Service Auto Scaling als Ausgangspunkt verwendet, im Gegensatz zu der gewünschten Anzahl. Dies ist, was die Verarbeitungskapazität sein soll. Dies verhindert eine übermäßige (unkontrollierte) Skalierung, die z. B. nicht erfüllt werden könnte, wenn nicht genügend Ressourcen für die Container Instances vorhanden sind, um die zusätzlichen Aufgaben zu platzieren. Wenn die Container-Instance-Kapazität später verfügbar ist, kann die ausstehende Skalierung möglicherweise gelingen, und weitere Skalierungen können nach der Ruhephase erfolgen.

  • Wenn Sie möchten, dass die Anzahl der Aufgaben auf Null skaliert wird, wenn es keine Arbeit zu erledigen gibt, legen Sie eine Mindestkapazität von 0 fest. Wenn die tatsächliche Kapazität 0 ist und die Metrik darauf hinweist, dass Workload-Bedarf besteht, wartet Service Auto Scaling, bis ein Datenpunkt gesendet wird, bevor die Skalierung ausgeführt wird. In diesem Fall skaliert es um den minimal möglichen Betrag als Startpunkt und setzt dann die Skalierung basierend auf der tatsächlichen Anzahl der laufenden Tasks fort.

  • Application Auto Scaling deaktiviert Scale-In-Prozesse, während Amazon ECS-Bereitstellungen ausgeführt werden. Scale-Out-Prozesse werden während einer Bereitstellung jedoch weiterhin ausgeführt, es sei denn, sie werden angehalten. Weitere Informationen finden Sie unter Automatische Skalierung und Bereitstellung von Services.

Amazon ECS-Konsolenerfahrung

Die automatische Skalierung für Services ist standardmäßig deaktiviert. Sie können sie aktivieren, indem Sie Skalierungsrichtlinien auf der Registerkarte Auto Scaling (automatische Skalierung) Ihrer Services in der AWS Management Console für Amazon ECS konfigurieren.

Schritt-für-Schritt-Anleitungen zum Arbeiten mit Skalierungsrichtlinien über die Konsole finden Sie unter Erstellen eines Amazon-ECS-Services und Aktualisierung eines Service. Ein Walkthrough zur Zielverfolgung finden Sie unter Skalierungsrichtlinien für die Ziel-Nachverfolgung.

Wenn Sie Skalierungsrichtlinien für einen Service in der Amazon ECS-Konsole konfigurieren, wird Ihr Service automatisch als skalierbares Ziel bei Application Auto Scaling registriert, und Ihre Skalierungsrichtlinien sind automatisch in Kraft, sobald sie erfolgreich erstellt wurden.

AWS CLI und SDK-Erfahrung

Service Auto Scaling wird durch eine Kombination der Amazon ECS-, Amazon CloudWatch- und Application Auto Scaling-APIs ermöglicht. Services werden mit Amazon ECS, Alarme mit CloudWatch und Skalierungsrichtlinien mit Application Auto Scaling erstellt.

Weitere Informationen über diese spezifischen API-Operationen finden Sie unter Amazon Elastic Container Service-API-Referenz, der Amazon CloudWatch-API-Referenz und der Application Auto Scaling-API-Referenz. Weitere Informationen über die AWS CLI-Befehle für diese Services finden Sie in den Abschnitten ecs, cloudwatch und application-autoscaling der AWS CLI-Befehlsreferenz.

So konfigurieren Sie Skalierungsrichtlinien für Ihren Amazon-ECS-Service mithilfe von AWS CLI

  1. Registrieren Sie die Ihren ECS-Service mit dem Befehl register-scalable-target als skalierbares Ziel.

  2. Erstellen Sie eine Skalierungsrichtlinie mit dem Befehl put-scaling-policy.

  3. [Schrittskalierung] Erstellen Sie mit dem Befehl put-metric-alarm einen Alarm, der die Skalierungsrichtlinie auslöst.

Weitere Informationen zum Konfigurieren von Skalierungsrichtlinien mithilfe von AWS CLI finden Sie im Benutzerhandbuch zum Application Auto Scaling.