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.

Kurzbeschreibung

Um die Anzahl Ihrer Aufgaben zu erhöhen oder zu verringern, integrieren Sie Amazon ECS auf Fargate mit Amazon CloudWatch-Alarmen und AWS Application Auto Scaling. Anschließend können Sie CloudWatch-Metriken verwenden, um Ihre CloudWatch-Alarme zu konfigurieren.

Wenn Ihr CloudWatch-Alarm ein Auto Scaling auslöst, verwendet Application Auto Scaling die konfigurierte Skalierungsrichtlinie, um die neue Anzahl zu ermitteln. Dann führt Application Auto Scaling den UpdateService-API-Aufruf an Amazon ECS mit dem neuen gewünschten Zählwert durch. Der Amazon ECS Service Scheduler startet oder beendet Aufgaben, um die neue gewünschte Anzahl zu erreichen. Ihre Skalierungsaktivität verbleibt im Status InProgress, bis der gewünschte Zähler und der laufende Zähler identisch sind.

Behebung

Hinweis: Der AWS Identity and Access Management (IAM)-Benutzer, der auf die Service-Auto-Scaling-Einstellungen zugreift, muss über die entsprechenden Berechtigungen für die Dienste verfügen, die dynamische Skalierung unterstützen. Weitere Informationen finden Sie unter IAM-Berechtigungen, die für Service Auto Scaling erforderlich sind.

Amazon-ECS-Konsole

Um Amazon ECS Service Auto Scaling auf Fargate zu konfigurieren, verwenden Sie die Amazon-ECS-Konsole, um Service Auto Scaling zu konfigurieren. Fügen Sie dann die Skalierungsrichtlinie zum Service hinzu.

Service Auto Scaling konfigurieren

Wenn Sie einen Service in der Amazon-ECS-Konsole erstellen oder aktualisieren, führen Sie unter Service Auto Scaling die folgenden Schritte aus:

  1. Wählen Sie die Option Service Auto Scaling verwenden.
  2. Geben Sie im Feld Mindestanzahl von Aufgaben die niedrigste Anzahl von Aufgaben ein, die Service Auto Scaling verwenden soll.
  3. Geben Sie unter Maximale Anzahl von Aufgaben die höchste Anzahl von Aufgaben ein, die Service Auto Scaling verwenden soll.
    **Hinweis:**Die minimale und maximale Anzahl von Aufgaben sind harte Grenzen für Ihren Dienst.

Dem Service eine Skalierungsrichtlinie hinzufügen

Wählen Sie je nach Ihren Anforderungen entweder eine Target-Tracking-Richtlinie oder eine Step-Scaling-Richtlinie aus:

  • Für Target-Tracking-Richtlinien: Führen Sie die Schritte unter So konfigurieren Sie Target-Scaling-Richtlinien für Ihren Amazon-ECS-Service mithilfe der Amazon-ECS-Konsole unter Target-Tracking-Scaling-Richtlinien aus.
  • Für Step-Scaling-Richtlinien: Führen Sie die Schritte unter So konfigurieren Sie Step-Scaling-Richtlinien für Ihren Amazon-ECS-Service mithilfe der Amazon-ECS-Konsole unter Step-Scaling-Richtlinien aus.

AWS CLI

**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Um Amazon ECS Service Auto Scaling auf Fargate zu konfigurieren, verwenden Sie die AWS CLI, um Service Auto Scaling zu konfigurieren. Erstellen Sie dann eine Target-Tracking-oder Step-Scaling-Richtlinie, um auf der Grundlage der von Ihnen festgelegten Werte zu skalieren.

Service Auto Scaling konfigurieren

Führen Sie den folgenden Befehl aus, um Ihren Fargate-Dienst als skalierbares Ziel bei Application Auto Scaling zu registrieren:

aws application-autoscaling register-scalable-target \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/<cluster>/<service-name> \
--min-capacity 1 --max-capacity 10 --region us-east-1

Eine Target-Tracking- oder Step-Scaling-Richtlinie erstellen

Erstellen Sie eine Target-Tracking- oder Step-Scaling-Richtlinie für das skalierbare Ziel. Im folgenden Beispiel ist Ihr Fargate-Dienst das skalierbare Ziel.

Target-Tracking-Richtlinie:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/<cluster>/<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: Wenn Sie Ihre Target-Tracking-Richtlinie erstellen, erstellt Application Auto Scaling CloudWatch-Alarme für die Skalierung auf der Grundlage der von Ihnen ausgewählten Zielwerte.

Step-Scaling-Richtlinie:

  1. Erstellen Sie eine Step-Scaling-Richtlinie mit den erforderlichen schrittweisen Anpassungen für die Aufskalieraktivität:

    aws application-autoscaling put-scaling-policy \
    --service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
    --resource-id service/<cluster>/<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"}'
  2. Verknüpfen Sie die Skalierungsrichtlinie als Alarmaktion mit dem CloudWatch-Alarm:

    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=ServiceName,Value=<service-name> --unit Percent \
    --alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"
  3. Wiederholen Sie die Schritte, um eine zweite Step-Scaling-Richtlinie und einen CloudWatch-Alarm für die Abskalieraktivität zu erstellen.

Hinweis: Wenn CloudWatch aufskaliert, werden alle Abskalieraktivitäten, die CloudWatch startet, blockiert, bis die Aufskalieraktivität abgeschlossen ist. Die InProgress-Aufskalieraktivität läuft ab, wenn Amazon ECS die von Application Auto Scaling festgelegte konfigurierte Anzahl nicht erreicht. Zu den häufigsten Gründen für ein Ablaufen gehören Bild- oder Netzwerkprobleme. Wenn CloudWatch-Metriken während des Aufskalier-Cooldowns beginnen abzuskalieren und eine Aufskalieraktivität abgeschlossen wird, wird eine Abskalieraktivität ausgeführt.

Ähnliche Informationen

Problembehandlung bei Service Auto Scaling

Service Auto Scaling

DescribeScalingActivities

application-autoscaling

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr