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

Lesedauer: 5 Minute
0

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

Kurzbeschreibung

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

Wenn Ihre CloudWatch-Alarme eine Auto Scaling-Richtlinie auslösen, bestimmt Application Auto Scaling die neue gewünschte Anzahl auf der Grundlage der konfigurierten Skalierungsrichtlinie. 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.

**Hinweis:**Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Lösung

Hinweis: Der 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.

Konfigurieren Sie Service Auto Scaling für Ihren Fargate-Dienst

Wenn Sie einen Service in der Amazon ECS-Konsole erstellen oder aktualisieren, wählen Sie auf der Seite Auto Scaling einstellen Folgendes aus:

1.Wählen Sie Service Auto Scaling konfigurieren, um die gewünschte Anzahl Ihres Dienstes anzupassen.

2.Geben Sie im Feld Mindestanzahl von Aufgaben die niedrigste Anzahl von Aufgaben ein, die Service Auto Scaling verwenden soll.

3.Geben Sie unter Gewünschte Anzahl von Aufgaben die Anzahl der Aufgaben ein, die Service Auto Scaling verwenden soll.

**Hinweis:**Die gewünschte Anzahl von Aufgaben muss im Bereich Ihrer minimalen und maximalen Aufgabenanzahl liegen.

4.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.

5.Wählen Sie für die IAM-Rolle für Service Auto Scaling die Option ecsAutoScaleRole.

6.Wählen Sie im Abschnitt Richtlinien für automatische Aufgabenskalierung die Option Auto Scaling Policy aus.

7.Führen Sie die verbleibenden Schritte des Einrichtungsassistenten aus, um Ihren Dienst zu erstellen oder zu aktualisieren.

Wählen Sie eine Skalierungsrichtlinie

Wählen Sie je nach Ihren Anforderungen und den folgenden Überlegungen entweder eine Richtlinie zur Zielverfolgung oder Richtlinie zur schrittweisen Skalierung aus:

Für Richtlinien zur Zielverfolgung:

  • Sie müssen einen Zielwert (Schwellenwert) für Ihre angegebene Metrik definieren. Application Auto Scaling erstellt und verwaltet die CloudWatch-Alarme, die die Skalierungsrichtlinie auslösen.
  • Sie können die Amazon ECS-Servicemetriken ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization und ALBRequestCountPerTarget für die Zielverfolgung verwenden.
  • Eine Richtlinie zur Zielverfolgung berechnet die Skalierungsanpassung (d. h. die Anzahl der gewünschten Aufgaben) auf der Grundlage der von Ihnen definierten Metrik und dem Zielwert. Sie müssen die Skalierungsaktion nicht wie bei einer schrittweisen Skalierungsrichtlinie konfigurieren. Dies liegt daran, dass durch eine Richtlinie zur Zielverfolgung Kapazität nach Bedarf hinzugefügt oder entfernt wird, um die Metrik auf dem angegebenen Zielwert oder in der Nähe dieses Werts zu halten.
  • Sie müssen eine Scale-Out- und Scale-In-Ruhephase wählen.

Für Richtlinien zur schrittweisen Skalierung:

  • Sie können vorhandene CloudWatch-Alarme für jede Metrik für die schrittweise Skalierung erstellen oder verwenden.
  • Sie müssen Skalierungsaktionen oder Schrittanpassungen wie ScalingAdjustment, MetricIntervalUpperBound und MetricIntervalLowerBound auswählen.
  • Sie können den Skalierungsanpassungstyp als Prozentsatz der aktuellen Kapazität Ihres skalierbaren Ziels oder mithilfe absoluter Zahlen angeben.
  • Sie können die Anzahl Ihrer gewünschten Aufgaben erhöhen oder verringern, indem Sie Skalierungsrichtlinien für Scale-In- und Scale-Out-Aktivitäten erstellen.

**Hinweis:**Weitere Informationen finden Sie in Schritt 5: Konfiguration Ihres Dienstes für die Verwendung von Service Auto Scaling.

Service Auto Scaling mithilfe der AWS-CLI konfigurieren

1.Registrieren Sie Ihren Fargate-Dienst als skalierbares Ziel mit Application Auto Scaling:

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

2.Erstellen Sie eine Richtlinie zur Zielverfolgung oder schrittweisen Skalierung für das skalierbare Ziel (d. h. Ihren Fargate-Dienst).

Richtlinie zur Zielverfolgung:

Erstellen Sie eine Richtlinie zur Zielverfolgung:

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 Richtlinie zur Zielverfolgung erstellen, erstellt Application Auto Scaling CloudWatch-Alarme für die Ein- und Ausskalierung auf der Grundlage des von Ihnen ausgewählten Zielwerts (Schwellenwert).

Richtlinie zur schrittweisen Skalierung:

1.Erstellen Sie eine Richtlinie zur schrittweisen Skalierung mit den erforderlichen Schrittanpassungen:

aws application-autoscaling put-scaling-policy \
--service-namespace ecs --scalable-dimension ecs:service:DesiredCount \
--resource-id service/your-cluster/your-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.Ordnen Sie Ihre Skalierungsrichtlinie aus Schritt 1 als Alarmaktion Ihrem neuen oder bestehenden CloudWatch-Alarm zu:

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=your-cluster Name=ServiceName,Value=your-service-name --unit Percent \
--alarm-actions "arn:aws:autoscaling:us-east-1:xxxxxxx:scalingPolicy:xxxxxx/Test-Step-scaling-policy-ScaleOut"

3.Erstellen Sie in einem weiteren Schritt eine Skalierungsrichtlinie und einen CloudWatch-Alarm für die Scale-In-Aktivität.

Hinweis: Wenn die Scale-Out-Aktivität Ihres Dienstes im Gange ist, wird jede von CloudWatch ausgelöste Scale-In-Aktivität blockiert, bis die Scale-Out-Aktivität abgeschlossen ist. Bei der InProgress-Scale-Out-Aktivität tritt ein Timeout auf, wenn Amazon ECS die von Auto Scaling festgelegte Anzahl nicht erreicht. Das Timeout kann verschiedene Ursachen haben, z. B. Image- oder Netzwerkprobleme. Wenn während der Scale-Out-Abklingzeit eine Scale-In-Aktivität durch CloudWatch-Metriken ausgelöst wird, eine Scale-Out-Aktivität jedoch abgeschlossen ist, wird eine Scale-In-Aktivität ausgeführt.


Ähnliche Informationen

Problembehandlung bei Service Auto Scaling

Service Auto Scaling

DescribeScalingActivities

AWS CLI-Befehlsreferenz für die automatische Skalierung von Anwendungen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren