0Pricing
Cloud & IT Cert Prep · Lektion

Automatische ECS-Service-Skalierung und Load Balancing

Binden Sie einen ALB an ECS-Services für pfadbasierte Weiterleitung und konfigurieren Sie die automatische Service-Skalierung anhand von CPU- oder benutzerdefinierten CloudWatch-Metriken.

Automatische ECS-Service-Skalierung und Load Balancing ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Die Notwendigkeit der automatischen Skalierung von ECS-Services

Eine festgelegte gewünschte Anzahl für einen ECS-Service kann nicht auf Schwankungen im Traffic reagieren – entweder Sie stellen zu viele Ressourcen bereit (und verschwenden Geld) oder zu wenige (und beeinträchtigen die Leistung). ECS Service Auto Scaling passt die gewünschte Anzahl von Tasks automatisch anhand von CloudWatch-Metriken an. Im Hintergrund nutzt der Dienst Application Auto Scaling – dasselbe Framework wie DynamoDB, Aurora und ElastiCache. ECS Service Auto Scaling unterstützt Richtlinien für Target Tracking, Step Scaling und Scheduled Scaling.

ECS als skalierbares Ziel registrieren

Bevor Sie Skalierungsrichtlinien hinzufügen, registrieren Sie den ECS-Service in Application Auto Scaling als skalierbares Ziel. Geben Sie die minimale und maximale Task-Anzahl, den Clusternamen und den Servicenamen als Ressourcen-ID an. Dadurch wird der Bereich festgelegt, innerhalb dessen die automatische Skalierung arbeitet. Die Mindestanzahl stellt sicher, dass immer eine grundlegende Kapazität verfügbar ist; die Höchstzahl verhindert, dass eine unkontrollierte Skalierung die Fargate-Kapazität oder EC2-Instances erschöpft.

aws application-autoscaling register-scalable-target \
  --service-namespace ecs \
  --scalable-dimension ecs:service:DesiredCount \
  --resource-id 'service/MyAppCluster/MyAppService' \
  --min-capacity 2 \
  --max-capacity 20

Target Tracking für ECS-Services

Target Tracking ist für die meisten ECS-Services die empfohlene Richtlinie für die automatische Skalierung. Die häufigste Zielmetrik ist ECSServiceAverageCPUUtilization – legen Sie ein Ziel von 50–70 % fest, und ECS fügt Tasks hinzu oder entfernt sie, um diese CPU-Auslastung beizubehalten. Eine weitere leistungsfähige Metrik ist ALBRequestCountPerTarget: Dabei wird die Anzahl der ALB-Anfragen pro Task überwacht und so skaliert, dass eine Zielrate von Anfragen pro Instance beibehalten wird. AWS übernimmt die Auf- und Abwärtsskalierung automatisch und verwendet dafür geeignete Abkühlzeiten.

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

ALB-Routing zu ECS-Services

Wenn Sie einen Application Load Balancer (ALB) mit einem ECS-Service verbinden, wird der HTTP-/HTTPS-Traffic auf alle laufenden Tasks verteilt. Die ALB-Zielgruppe registriert die IP-Adresse jedes Tasks (bei Fargate/awsvpc) oder den Container-Port (im Bridge-Modus). ECS registriert neue Tasks beim Start automatisch in der Zielgruppe und entfernt sie beim Beenden aus dieser. Der ALB führt für jeden Task Health Checks durch; fehlerhafte Tasks werden ordnungsgemäß entleert (Verbindungen werden kontrolliert geschlossen), bevor der Service sie beendet.

Pfadbasiertes Routing für mehrere Services

Ein besonders leistungsfähiges Muster besteht darin, verschiedene URL-Pfade mithilfe von ALB path-based routing an unterschiedliche ECS-Services weiterzuleiten. Ein einzelner ALB mit einem HTTPS-Listener kann beispielsweise /api/orders/* an den ECS-Service Orders, /api/users/* an den ECS-Service Users und /api/products/* an den ECS-Service Products weiterleiten – jeweils mit einem eigenen ECS-Service und unabhängiger Skalierung. Dadurch werden separate Load Balancer für jeden Microservice überflüssig, was Kosten senkt und die DNS-Verwaltung vereinfacht.

# ALB listener rule for ECS microservice routing
aws elbv2 create-rule \
  --listener-arn 'arn:aws:elasticloadbalancing:...' \
  --priority 10 \
  --conditions '[{"Field": "path-pattern", "Values": ["/api/orders/*"]}]' \
  --actions '[{"Type": "forward", "TargetGroupArn": "arn:...OrdersTargetGroup"}]'

Connection Draining und Deregistrierungsverzögerung

Wenn ein ECS-Task beendet werden soll (während einer Abwärtsskalierung oder eines Deployments), markiert der ALB ihn als draining und leitet keine neuen Anfragen mehr an ihn weiter, lässt jedoch laufende Anfragen noch abschließen. Die deregistration delay (standardmäßig 300 Sekunden, konfigurierbar von 0 bis 3600 Sekunden) gibt an, wie lange der ALB wartet, bevor er Verbindungen zwangsweise schließt. Bei ECS mit kurzen Anfragezeiten sollten Sie eine niedrigere Deregistrierungsverzögerung (30–60 Sekunden) festlegen, um Deployments und Abwärtsskalierungen zu beschleunigen. Für langlebige Verbindungen (WebSockets, Datei-Uploads) sollten Sie eine längere Verzögerung beibehalten.

# Set deregistration delay on target group to 60 seconds
aws elbv2 modify-target-group-attributes \
  --target-group-arn 'arn:aws:elasticloadbalancing:...' \
  --attributes 'Key=deregistration_delay.timeout_seconds,Value=60'

Benutzerdefinierte Metriken für die ECS-Skalierung

Über CPU und Arbeitsspeicher hinaus können Sie benutzerdefinierte CloudWatch-Metriken aus Ihrer Anwendung veröffentlichen (z. B. Warteschlangentiefe, aktive Sitzungen oder Geschäfts-KPIs) und damit die Skalierung steuern. Wenn beispielsweise jeder ECS-Task 50 Warteschlangennachrichten gleichzeitig verarbeiten kann, veröffentlichen Sie die Tiefe der SQS-Warteschlange als benutzerdefinierte Metrik und erstellen eine Target-Tracking-Richtlinie mit einem Ziel von 50 Nachrichten pro Task. So wird die Skalierung direkt durch die Geschäftslogik gesteuert, statt sich auf Infrastrukturmetriken zu stützen, die möglicherweise nicht mit der Anwendungslast korrelieren.

aws application-autoscaling put-scaling-policy \
  --policy-name 'QueueDepthScaling' \
  --policy-type TargetTrackingScaling \
  --target-tracking-scaling-policy-configuration '{
    "CustomizedMetricSpecification": {
      "MetricName": "QueueDepth",
      "Namespace": "MyApp",
      "Statistic": "Average"
    },
    "TargetValue": 50.0
  }' \
  --resource-id 'service/MyCluster/WorkerService' \
  --scalable-dimension ecs:service:DesiredCount \
  --service-namespace ecs

Schutz von Tasks vor Abwärtsskalierung

Ähnlich wie bei EC2 Auto Scaling unterstützt ECS den Schutz von Tasks vor Abwärtsskalierung. Ein laufender Task kann über die ECS-API selbst ein Schutz-Flag setzen, um während einer Abwärtsskalierung nicht beendet zu werden, solange er einen kritischen Auftrag verarbeitet. Das ist nützlich für ECS-Tasks, die als SQS-Worker fungieren: Ein Worker, der gerade einen langen Auftrag aus der Warteschlange entnommen hat, kann sich selbst schützen, den Auftrag abschließen und den Schutz anschließend wieder aufheben. Ohne diesen Schutz könnte die Abwärtsskalierung einen Task mitten in der Verarbeitung beenden und dadurch doppelte Auftragsausführung oder Datenverlust verursachen.

# From inside the ECS task container
curl -X PUT 'http://169.254.170.2/v3/tasks/scale-in-protection' \
  -H 'Content-Type: application/json' \
  -d '{"ProtectionEnabled": true, "ExpiresInMinutes": 60}'

Skalierungsmetriken: CPU, Arbeitsspeicher oder ALB

Wählen Sie Ihre Skalierungsmetrik sorgfältig. CPU-Auslastung ist der Standard und eignet sich für rechenintensive Workloads. Arbeitsspeicherauslastung (ECSServiceAverageMemoryUtilization) ist für speicherintensive Anwendungen hilfreich. Eine Erhöhung des Arbeitsspeichers erfordert jedoch das Hinzufügen von Tasks – wenn Ihr Task durch den Arbeitsspeicher pro Task und nicht durch die Anzahl gleichzeitig verarbeiteter Anfragen begrenzt ist, kann es sinnvoller sein, die Speicherzuweisung in der Task-Definition anzupassen. ALBRequestCountPerTarget korreliert direkt mit der Benutzererfahrung und ist für Web-APIs die aussagekräftigste Metrik: Skalieren Sie anhand der tatsächlichen Anfragerate pro Task.

ECS Deployment Circuit Breaker

Der ECS Deployment Circuit Breaker erkennt fehlschlagende Deployments automatisch und führt ein Rollback auf die letzte stabile Version durch. Ohne ihn würde ein fehlerhaftes Deployment (etwa ein Container, der Health Checks nicht besteht) dazu führen, dass ECS unbegrenzt versucht, neue Tasks zu starten. Wenn der Circuit Breaker aktiviert ist und innerhalb eines Erkennungszeitraums ein bestimmter Prozentsatz der neu gestarteten Tasks die Health Checks nicht besteht, markiert ECS das Deployment als FAILED und führt automatisch ein Rollback auf die vorherige Revision der Task-Definition durch. Dadurch werden länger andauernde Beeinträchtigungen des Service durch fehlerhafte Deployments verhindert.

aws ecs create-service \
  --cluster 'MyAppCluster' \
  --service-name 'MyAppService' \
  --task-definition 'myapp-task:5' \
  --desired-count 3 \
  --deployment-configuration '{
    "deploymentCircuitBreaker": {
      "enable": true,
      "rollback": true
    },
    "minimumHealthyPercent": 100,
    "maximumPercent": 200
  }'

End-to-End-Architektur: ECS + ALB + Auto Scaling

Eine produktionsreife Architektur für eine containerisierte Web-API: Route 53 löst die Domain in den DNS-Namen eines ALB auf; der ALB beendet HTTPS (ACM-Zertifikat), wendet WAF-Regeln an und leitet Anfragen an eine ECS service target group weiter. Fargate-Tasks in privaten Subnetzen über drei AZs hinweg verarbeiten die Anfragen. ECS Service Auto Scaling passt mithilfe von Target Tracking auf ALBRequestCountPerTarget die Task-Anzahl zwischen 2 und 50 an. Die Tasks verbinden sich mit RDS Aurora und ElastiCache in privaten Subnetzen. Alle Logs werden an CloudWatch Logs gesendet; Metriken steuern CloudWatch-Dashboards und Alarme.

Kurztest

Testen Sie Ihr Verständnis der AWS-Solutions-Architect-Konzepte (SAA-C03) aus dieser Lektion.

Lektionszusammenfassung

In dieser Lektion haben Sie gelernt: ECS Service Auto Scaling verwendet Application Auto Scaling mit Target Tracking (CPU, ALB-Anfragen oder benutzerdefinierte Metriken), um die Task-Anzahl innerhalb konfigurierter Mindest- und Höchstgrenzen anzupassen. ALB path-based routing ermöglicht es einem Load Balancer, mehrere ECS-Microservices bereitzustellen, indem URL-Pfade an unterschiedliche Zielgruppen weitergeleitet werden. Der Deployment Circuit Breaker führt bei fehlschlagenden Deployments automatisch ein Rollback durch, bevor diese zu länger andauernden Beeinträchtigungen des Service führen. Damit ist das Modul zu ECS und Containern abgeschlossen – als Nächstes beschäftigen wir uns mit Amazon EKS für Kubernetes auf AWS.

Häufig gestellte Fragen

Ist die Lektion „Automatische ECS-Service-Skalierung und Load Balancing“ kostenlos?

Ja — der vollständige Text von „Automatische ECS-Service-Skalierung und Load Balancing“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Automatische ECS-Service-Skalierung und Load Balancing“?

Binden Sie einen ALB an ECS-Services für pfadbasierte Weiterleitung und konfigurieren Sie die automatische Service-Skalierung anhand von CPU- oder benutzerdefinierten CloudWatch-Metriken. Du übst Cloud & IT Cert Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cloud & IT Cert Prep zu starten?

Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Automatische ECS-Service-Skalierung und Load Balancing“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?

Ja. Jede Cloud & IT Cert Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. ECS-Cluster, Task-Definitionen und Services
  2. EC2-Starttyp im Vergleich zu Fargate
  3. ECR: Container-Images speichern und abrufen
  4. Automatische ECS-Service-Skalierung und Load Balancing
← Zurück zu Cloud & IT Cert Prep