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

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:

  • Erstellt ein AWS-Konto.

  • Installierte und konfigurierte die AWS CLI.

  • Mit Application Auto Scaling wurden die erforderlichen Berechtigungen für die Registrierung und Deregistrierung von Ressourcen als skalierbare Ziele erteilt. Darüber hinaus wurden die erforderlichen Berechtigungen für die Erstellung von Skalierungsrichtlinien und geplanten Aktionen erteilt. Weitere Informationen finden Sie unter Identity and Access Management für Application Auto Scaling.

  • Es wurde eine unterstützte Ressource in einer Umgebung außerhalb der Produktionsumgebung erstellt, die für dieses Tutorial zur Verfügung steht. 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 in der Ausgabe eine Meldung angezeigt, dass die Mindestkapazität nicht unter dem angegebenen Wert liegen darf. Außerdem wird der Mindestkapazitätswert angegeben, 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 register-scalable-targetBefehl, 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

Sie können den put-scheduled-actionBefehl verwenden, um geplante Aktionen zu erstellen, die so konfiguriert sind, dass sie Ihren Geschäftsanforderungen 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. Verwenden Sie den folgenden put-scheduled-actionBefehl, um das skalierbare Ziel zu skalieren. 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. Verwenden Sie den folgenden describe-scheduled-actionsBefehl, um zu überprüfen, ob Ihre geplante Aktion vorhanden ist.

    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.

    Gemäß dem angegebenen Zeitplan (täglich um 20:00 Uhr UTC) aktualisiert Application Auto Scaling den Wert MinCapacity und des Ziels MaxCapacity auf 0, wie im folgenden put-scheduled-actionBefehl angegeben.

    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. Verwenden Sie den folgenden describe-scheduled-actionsBefehl, um zu überprüfen, ob Ihre geplante Aktion vorhanden ist.

    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 put-scaling-policyBefehl, 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 angeben zu müssen CloudWatch. Weitere Informationen zu den verfügbaren vordefinierten Metriken finden Sie unter Zielverfolgungs-Skalierungsrichtlinien für Application Auto Scaling.

    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. Verwenden Sie den folgenden describe-scaling-policiesBefehl, um zu überprüfen, ob Ihre geplante Aktion vorhanden ist.

    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 describe-scaling-activitiesBefehl 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 die 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 delete-scheduled-actionBefehl 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

Mit dem folgenden delete-scaling-policyBefehl wird eine angegebene Skalierungsrichtlinie für die Zielverfolgung gelöscht. 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 deregister-scalable-targetBefehl, um die Registrierung des skalierbaren Ziels aufzuheben. 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