Tutorial: Auto Scaling zur Bewältigung eines hohen Workloads konfigurieren - Application Auto Scaling

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial: Auto Scaling zur Bewältigung eines hohen Workloads konfigurieren

Wichtig

Bevor Sie sich mit diesem Tutorial beschäftigen, empfehlen wir, dass Sie zunächst die folgenden einführenden Themen durcharbeiten: Tutorial: Erste Schritte mit der geplanten Skalierung mit AWS CLI.

In diesem Tutorial lernen Sie, wie Sie in Zeitfenstern, in denen Ihre Anwendung ein höheres als das normale Workload aufweist, horizontal skalieren. Dies ist hilfreich, wenn Sie eine Anwendung haben, die in regelmäßigen Abständen oder saisonal plötzlich eine große Anzahl von Besuchern haben kann.

Sie können eine Zielverfolgungs-Skalierungsrichtlinie zusammen mit einer geplanten Skalierung verwenden, um die zusätzliche Last zu bewältigen. Bei der geplanten Skalierung werden automatisch Änderungen an Ihren MinCapacity und MaxCapacity in Ihrem Namen nach einem von Ihnen festgelegten Zeitplan initiiert. Wenn eine Zielverfolgungs-Skalierungsrichtlinie für die Ressource aktiv ist, kann sie dynamisch auf der Grundlage der aktuellen Ressourcenauslastung innerhalb des neuen minimalen und maximalen Kapazitätsbereichs skaliert werden.

Nach Abschluss dieses Tutorials wissen Sie, wie Sie:

  • Mit der geplanten Skalierung können Sie zusätzliche Kapazität hinzufügen, um eine hohe Last zu bewältigen, bevor sie eintrifft, und die zusätzliche Kapazität entfernen, wenn sie nicht mehr benötigt wird.

  • Verwenden Sie eine Zielverfolgungs-Skalierungsrichtlinie, um Ihre Anwendung auf der Grundlage der aktuellen Ressourcenauslastung zu skalieren.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie Folgendes bereits gemacht haben:

  • Sie haben ein AWS-Konto erstellt. Weitere Informationen finden Sie unter Einrichten, um Application Auto Scaling zu verwenden.

  • Sie installierten und konfigurierten die AWS CLI. Weitere Informationen finden Sie unter Richten Sie das ein AWS CLI.

  • Ihr Konto verfügt über alle erforderlichen Berechtigungen zum Registrieren und Deregistrieren von Ressourcen als skalierbare Ziele mit Application Auto Scaling. Außerdem verfügt sie über alle erforderlichen Berechtigungen zur Erstellung von Skalierungsrichtlinien und geplanten Aktionen. Weitere Informationen finden Sie unter Identity and Access Management für Application Auto Scaling.

  • Sie verfügen über eine unterstützte Ressource in einer nicht produktiven Umgebung, die Sie für dieses Lernprogramm verwenden können. Wenn Sie noch über keines verfügen, erstellen Sie jetzt eines. Weitere Informationen zu den AWS-Services und Ressourcen, die mit Application Auto Scaling zusammenarbeiten, finden Sie im AWS -Services, die Sie mit Application Auto Scaling verwenden können-Abschnitt.

Anmerkung

Bei der Durchführung dieses Tutorials gibt es zwei Schritte, in denen Sie die minimalen und maximalen Kapazitätswerte Ihrer Ressource auf 0 festlegen, um die aktuelle Kapazität auf 0 zurückzusetzen. Je nachdem, welche Ressource Sie mit Application Auto Scaling verwenden, können Sie die aktuelle Kapazität während dieser Schritte möglicherweise nicht auf 0 zurücksetzen. Um Ihnen bei der Lösung des Problems zu helfen, wird eine Meldung in der Ausgabe darauf hinweisen, dass die Mindestkapazität nicht kleiner als der angegebene Wert sein kann, und den Mindestkapazitätswert angeben, den die AWS-Ressource akzeptieren kann.

Schritt 1: Registrieren Sie Ihr skalierbares Ziel

Beginnen Sie damit, Ihre Ressource als skalierbares Ziel bei Application Auto Scaling zu registrieren. Ein skalierbares Ziel ist eine Ressource, die dank Application Auto Scaling auf- und abskaliert werden kann.

So registrieren Sie Ihr skalierbares Ziel mit Application Auto Scaling
  • Verwenden Sie den folgenden Befehl register-scalable-target, um ein neues skalierbares Ziel zu registrieren. Setzen Sie die Werte --min-capacity und --max-capacity auf 0, um die aktuelle Kapazität auf 0 zurückzusetzen.

    Ersetzen Sie den Beispieltext für --service-namespace mit dem Namespace des AWS-Services, den Sie mit Application Auto Scaling verwenden, --scalable-dimension mit der skalierbaren Dimension im Zusammenhang mit der Ressource, die Sie registrieren, --resource-id mit einem Bezeichner für die Ressource. Diese Werte variieren je nachdem, welche Ressource verwendet wird und wie die Ressourcen-ID erstellt wird. Sehen Sie sich die Themen im AWS -Services, die Sie mit Application Auto Scaling verwenden können-Abschnitt für weitere Informationen an. Zu diesen Themen gehören Beispielbefehle, die Ihnen zeigen, wie Sie skalierbare Ziele bei Application Auto Scaling registrieren.

    Linux, macOS oder Unix

    aws application-autoscaling register-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --min-capacity 0 --max-capacity 0

    Windows

    aws application-autoscaling register-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier --min-capacity 0 --max-capacity 0

    Bei Erfolg gibt dieser Befehl den ARN des skalierbaren Ziels zurück.

    { "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

Schritt 2: Richten Sie geplante Aktionen entsprechend Ihren Anforderungen ein

Mit dem Befehl put-scheduled-action können Sie zeitgesteuerte Aktionen erstellen, die so konfiguriert sind, dass sie Ihren geschäftlichen Anforderungen entsprechen. In diesem Tutorial konzentrieren wir uns auf eine Konfiguration, die den Verbrauch von Ressourcen außerhalb der Arbeitszeiten stoppt, indem die Kapazität auf 0 reduziert wird.

So erstellen Sie eine geplante Aktion, die am Morgen ausläuft
  1. Um das skalierbare Ziel zu skalieren, verwenden Sie den folgenden Befehl put-scheduled-action. Fügen Sie den Parameter --schedule mit einem wiederkehrenden Zeitplan in UTC ein, indem Sie einen cron-Ausdruck verwenden.

    Nach dem festgelegten Zeitplan (jeden Tag um 9:00 Uhr UTC) aktualisiert Application Auto Scaling die Werte MinCapacity und MaxCapacity auf den gewünschten Bereich von 1-5 Kapazitätseinheiten.

    Linux, macOS oder Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-first-scheduled-action \ --schedule "cron(0 9 * * ? *)" \ --scalable-target-action MinCapacity=1,MaxCapacity=5

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-first-scheduled-action --schedule "cron(0 9 * * ? *)" --scalable-target-action MinCapacity=1,MaxCapacity=5

    Dieser Befehl gibt keine Ausgabe zurück, wenn er nicht erfolgreich ist.

  2. Um zu bestätigen, dass Ihre geplante Aktion existiert, verwenden Sie den folgenden Befehl describe-scheduled-actions.

    Linux, macOS oder Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    Es folgt eine Beispielausgabe.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... } ]
So erstellen Sie eine geplante Aktion, die nachts aktiviert wird
  1. Wiederholen Sie das vorangegangene Verfahren, um eine weitere geplante Aktion zu erstellen, mit der Application Auto Scaling am Ende des Tages aktiviert wird.

    Am angegebenen Zeitplan (jeden Tag um 20:00 Uhr UTC) aktualisiert Application Auto Scaling die Werte MinCapacity und MaxCapacity des Ziels auf 0, wie durch den folgenden Befehl put-scheduled-action angewiesen.

    Linux, macOS oder Unix

    aws application-autoscaling put-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action \ --schedule "cron(0 20 * * ? *)" \ --scalable-target-action MinCapacity=0,MaxCapacity=0

    Windows

    aws application-autoscaling put-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action --schedule "cron(0 20 * * ? *)" --scalable-target-action MinCapacity=0,MaxCapacity=0
  2. Um zu bestätigen, dass Ihre geplante Aktion existiert, verwenden Sie den folgenden Befehl describe-scheduled-actions.

    Linux, macOS oder Unix

    aws application-autoscaling describe-scheduled-actions \ --service-namespace namespace \ --query 'ScheduledActions[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scheduled-actions --service-namespace namespace --query "ScheduledActions[?ResourceId==`identifier`]"

    Es folgt eine Beispielausgabe.

    [ { "ScheduledActionName": "my-first-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 9 * * ? *)", "ScalableTargetAction": { "MinCapacity": 1, "MaxCapacity": 5 }, ... }, { "ScheduledActionName": "my-second-scheduled-action", "ScheduledActionARN": "arn", "Schedule": "cron(0 20 * * ? *)", "ScalableTargetAction": { "MinCapacity": 0, "MaxCapacity": 0 }, ... } ]

Schritt 3: Hinzufügen einer Skalierungsrichtlinie für die Zielverfolgung

Bei der Zielverfolgung vergleicht Application Auto Scaling den Zielwert in der Richtlinie mit dem aktuellen Wert der angegebenen Metrik.

Bei der Zielverfolgung vergleicht Application Auto Scaling den Zielwert in der Richtlinie mit dem aktuellen Wert der angegebenen Metrik. Wenn diese Werte über einen bestimmten Zeitraum hinweg nicht übereinstimmen, fügt Application Auto Scaling Kapazitäten hinzu oder entfernt sie, um eine gleichmäßige Leistung zu gewährleisten. Wenn die Belastung Ihrer Anwendung und der Metrikwert steigen, fügt Application Auto Scaling so schnell wie möglich Kapazität hinzu, ohne den Wert MaxCapacity zu überschreiten. Wenn Application Auto Scaling Kapazität entfernt, weil die Last minimal ist, geschieht dies, ohne dass der Wert unter MinCapacity fällt. Durch die Anpassung der Kapazität an die Nutzung zahlen Sie nur für das, was Ihre Anwendung benötigt.

Wenn die Metrik unzureichende Daten aufweist, weil Ihre Anwendung nicht ausgelastet ist, wird durch Application Auto Scaling keine Kapazität hinzugefügt oder entfernt. Mit anderen Worten: Application Auto Scaling priorisiert die Verfügbarkeit in Situationen, in denen nicht genügend Informationen verfügbar sind.

Sie können mehrere Skalierungsrichtlinien hinzufügen, aber stellen Sie sicher, dass Sie keine widersprüchlichen Stufenskalierungsrichtlinien hinzufügen, da dies zu unerwünschtem Verhalten führen könnte. Wenn beispielsweise die Schrittskalierungsrichtlinie eine Abwärtsskalierungsaktivität initiiert, bevor die Zielverfolgungsrichtlinie abwärts skaliert werden kann, wird die Abwärtsskalierungsaktivität nicht blockiert. Nach Abschluss der Skalierungsaktivität kann die Zielverfolgungsrichtlinie Application Auto Scaling anweisen, die Skalierung wieder zu beenden.

So erstellen Sie eine Skalierungsrichtlinie für die Ziel-Nachverfolgung
  1. Verwenden Sie den folgenden Befehl put-scaling-policy, um die Richtlinie zu erstellen.

    Die Metriken, die am häufigsten für die Zielverfolgung verwendet werden, sind vordefiniert, und Sie können sie verwenden, ohne die vollständige Metrikspezifikation von CloudWatch bereitzustellen. Weitere Informationen zu den verfügbaren vordefinierten Metriken finden Sie unter Skalierungsrichtlinien für die Ziel-Nachverfolgung.

    Bevor Sie diesen Befehl ausführen, stellen Sie sicher, dass Ihre vordefinierte Metrik den Zielwert erwartet. Wenn Sie beispielsweise eine Skalierung vornehmen möchten, wenn die CPU-Auslastung 50 % erreicht, geben Sie einen Zielwert von 50,0 an. Oder geben Sie einen Zielwert von 0,7 an, um die von Lambda bereitgestellte Gleichzeitigkeit zu reduzieren, wenn die Auslastung 70 % erreicht. Informationen zu den Zielwerten für eine bestimmte Ressource finden Sie in der vom Dienst bereitgestellten Dokumentation zur Konfiguration der Zielverfolgung. Weitere Informationen finden Sie unter AWS -Services, die Sie mit Application Auto Scaling verwenden können.

    Linux, macOS oder Unix

    aws application-autoscaling put-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }}'

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration "{ \"TargetValue\": 50.0, \"PredefinedMetricSpecification\": { \"PredefinedMetricType\": \"predefinedmetric\" }}"

    Bei Erfolg gibt dieser Befehl die ARNs und Namen der beiden CloudWatch-Alarme zurück, die in Ihrem Namen erstellt wurden.

  2. Um zu bestätigen, dass Ihre geplante Aktion existiert, verwenden Sie den folgenden Befehl describe-scaling-policies.

    Linux, macOS oder Unix

    aws application-autoscaling describe-scaling-policies --service-namespace namespace \ --query 'ScalingPolicies[?ResourceId==`identifier`]'

    Windows

    aws application-autoscaling describe-scaling-policies --service-namespace namespace --query "ScalingPolicies[?ResourceId==`identifier`]"

    Es folgt eine Beispielausgabe.

    [ { "PolicyARN": "arn", "TargetTrackingScalingPolicyConfiguration": { "PredefinedMetricSpecification": { "PredefinedMetricType": "predefinedmetric" }, "TargetValue": 50.0 }, "PolicyName": "my-scaling-policy", "PolicyType": "TargetTrackingScaling", "Alarms": [], ... } ]

Schritt 4: Nächste Schritte

Wenn eine Skalierung auftritt, wird in der Ausgabe der Skalierung für das skalierbare Ziel eine Aufzeichnung angezeigt, zum Beispiel:

Successfully set desired count to 1. Change successfully fulfilled by ecs.

Um Ihre Skalierungsaktivitäten mit Application Auto Scaling zu überwachen, können Sie den folgenden Befehl describe-scaling-activities verwenden.

Linux, macOS oder Unix

aws application-autoscaling describe-scaling-activities --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling describe-scaling-activities --service-namespace namespace --scalable-dimension dimension --resource-id identifier

Schritt 5: Bereinigen

Um zu verhindern, dass für Ihr Konto Gebühren für Ressourcen anfallen, die während der aktiven Skalierung erstellt wurden, können Sie die zugehörige Skalierungskonfiguration wie folgt bereinigen.

Durch das Löschen der Skalierungskonfiguration wird Ihre zugrunde liegende AWS-Ressource nicht gelöscht. Sie wird auch nicht auf ihre ursprüngliche Kapazität zurückgesetzt. Sie können die Konsole des Dienstes, in dem Sie die Ressource erstellt haben, verwenden, um sie zu löschen oder ihre Kapazität anzupassen.

So löschen Sie die geplanten Aktionen

Der folgende Befehl delete-scheduled-action löscht eine angegebene geplante Aktion. Sie können diesen Schritt überspringen, wenn Sie die von Ihnen erstellten geplanten Aktionen beibehalten möchten.

Linux, macOS oder Unix

aws application-autoscaling delete-scheduled-action \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --scheduled-action-name my-second-scheduled-action

Windows

aws application-autoscaling delete-scheduled-action --service-namespace namespace --scalable-dimension dimension --resource-id identifier --scheduled-action-name my-second-scheduled-action
So löschen Sie die Skalierungsrichtlinie

Der folgende Befehl delete-scaling-policy löscht eine angegebene Zielverfolgungs-Skalierungsrichtlinie. Sie können diesen Schritt überspringen, wenn Sie die von Ihnen erstellte Skalierungsrichtlinie beibehalten möchten.

Linux, macOS oder Unix

aws application-autoscaling delete-scaling-policy \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier \ --policy-name my-scaling-policy

Windows

aws application-autoscaling delete-scaling-policy --service-namespace namespace --scalable-dimension dimension --resource-id identifier --policy-name my-scaling-policy
So melden Sie das skalierbare Ziel ab

Verwenden Sie den folgenden Befehl deregister-scalable-target, um das skalierbare Ziel zu deregistrieren. Mit diesem Befehl werden alle Skalierungsrichtlinien, die Sie erstellt haben, und alle geplanten Aktionen, die Sie noch nicht gelöscht haben, gelöscht. Sie können diesen Schritt überspringen, wenn das skalierbare Ziel für eine zukünftige Verwendung registriert bleiben soll.

Linux, macOS oder Unix

aws application-autoscaling deregister-scalable-target \ --service-namespace namespace \ --scalable-dimension dimension \ --resource-id identifier

Windows

aws application-autoscaling deregister-scalable-target --service-namespace namespace --scalable-dimension dimension --resource-id identifier