Direkt zum Inhalt

Wie kann ich Amazon ECS Service Auto Scaling auf Fargate konfigurieren?

Lesedauer: 4 Minute
0

Ich möchte Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling auf AWS Fargate konfigurieren.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Wenn ein Amazon CloudWatch-Alarm die automatische Skalierung auslöst, verwendet Application Auto Scaling die Skalierungsrichtlinie, um die neue gewünschte Anzahl zu ermitteln. Dann initiiert Application Auto Scaling den UpdateService API-Aufruf an Amazon ECS mit dem neuen Wert für den Parameter desiredCount. Der Amazon ECS Service Scheduler startet oder beendet Aufgaben, um mit der neuen gewünschten Anzahl übereinzustimmen. Die Skalierungsaktivität verbleibt im Status InProgress, bis die neue gewünschte Anzahl und die laufende Anzahl übereinstimmen.

Du kannst entweder die Amazon ECS-Konsole oder die AWS-CLI verwenden, um Amazon ECS Auto Scaling auf Fargate zu konfigurieren. Der AWS Identity and Access Management (IAM)-Benutzer, der auf die Service-Auto-Scaling-Einstellungen zugreift, muss über die entsprechenden Berechtigungen für die Services verfügen, die dynamische Skalierung unterstützen. Weitere Informationen finden unter IAM-Berechtigungen, die für Service Auto Scaling in Amazon ESC erforderlich sind.

Die Amazon ECS-Konsole verwenden

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-ECS-Konsole.
  2. Wähle Service Auto Scaling und dann die Option Service Auto Scaling verwenden aus.
  3. Gib die folgenden Werte für Service Auto Scaling ein:
    Gib für Mindestanzahl an Aufgaben die niedrigste Anzahl an Aufgaben ein.
    Gib für Maximale Anzahl an Aufgaben die höchste Anzahl an Aufgaben ein.
    Hinweis: Die gewünschte Anzahl unterschreitet weder die Mindest- noch die Höchstzahl.
  4. Skalierungsrichtlinie für Zielüberwachung erstellen oder erstelle eine Richtlinie zur schrittweisen Skalierung, um sie zu Amazon ECS hinzuzufügen.

Verwendung der AWS CLI

Führe den folgenden Befehl register-scalable-target aus, um Fargate als skalierbares Ziel mit Application Auto Scaling zu registrieren:

aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--min-capacity 1 --max-capacity 10 --region REGION

Hinweis: Ersetze CLUSTER_NAME durch deinen Cluster, SERVICE_NAME durch deinen Service und REGION durch deine AWS-Region.

Führe dann die put-scaling-policy aus um die Skalierungsrichtlinie für Zielüberwachung zu erstellen oder die Richtlinie zur schrittweisen Skalierung für Fargate als skalierbares Ziel zu erstellen. Füge in den Befehl die JSON-Datei ein, die du erstellt hast.

Beispielbefehl für eine Skalierungsrichtlinie für Zielüberwachung:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--policy-name Test-target-tracking-scaling-policy --policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{ "TargetValue": 75.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "ECSServiceAverageCPUUtilization" }, "ScaleOutCooldown": 60,"ScaleInCooldown": 60}'

Hinweis: Ersetze CLUSTER_NAME durch deinen Cluster, SERVICE_NAME durch deinen Service und REGION durch deine Region. Application Auto Scaling erstellt CloudWatch-Alarme für die Skalierung auf der Grundlage der Zielwerte.

Beispielbefehl für eine Richtlinie zur schrittweisen Skalierung:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id service/CLUSTER_NAME/SERVICE_NAME \
--policy-name Test-Step-scaling-policy-ScaleOut --policy-type StepScaling \
--step-scaling-policy-configuration '{"AdjustmentType": "ExactCapacity","StepAdjustments": [ { "MetricIntervalLowerBound": 20, "ScalingAdjustment": 10}, { "MetricIntervalLowerBound": 0, "MetricIntervalUpperBound": 20,"ScalingAdjustment": 5}],"Cooldown": 60, "MetricAggregationType": "Average"}'

Hinweis: Ersetze CLUSTER_NAME durch deinen Cluster, SERVICE_NAME durch deinen Service und REGION durch deine Region.

Wenn du eine Richtlinie zur schrittweisen Skalierung erstellt hast, führe den folgenden Befehl put-metric-alarm aus, um die Skalierungsrichtlinie einem CloudWatch-Alarm hinzuzufügen. Wiederhole dann den vorherigen Schritt, um eine Skalierungsrichtlinie für den zweiten Schritt und einen CloudWatch-Alarm für die Skalierungsaktivität zu erstellen:

aws cloudwatch put-metric-alarm \
--alarm-name Test-ScaleOut --metric-name MemoryUtilization \
--namespace AWS/ECS \
--statistic Average --period 60 --threshold 60 \
--comparison-operator GreaterThanOrEqualToThreshold --evaluation-periods 1 --datapoints-to-alarm 1 \
--dimensions Name=ClusterName,Value=CLUSTER_NAME Name=ServiceName,Value=SERVICE_NAME --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

Hinweis: Ersetze CLUSTER_NAME durch deinen Cluster, SERVICE_NAME durch deinen Service und REGION durch deine Region.

Application Auto Scaling blockiert alle Skalierungsaktivitäten während der Aufskalierungs-Aktivitäten, bis die Aufskalierung abgeschlossen ist. Wenn es die von die konfigurierte Anzahl nicht erreicht, setzt Amazon ECS ein Timeout für die Aktivität InProgress-Aufskalierung. Gründe für ein Timeout sind unter anderem Bild- oder Netzwerkprobleme. Wenn CloudWatch-Metriken während der Aufskalierungs-Abklingzeit abskalieren und die Aufskalierungs-Aktivität abgeschlossen ist, führt Application Auto Scaling die Skalierung der Aktivität durch.

Ähnliche Informationen

Fehlerbehebung bei Service Auto Scaling in Amazon ECS

Den Amazon ECS-Service automatisch skalieren

DescribeScalingActivities

application-autoscaling