Wie behebe ich Probleme im Zusammenhang mit geplanten Aufgaben in Amazon ECS?

Lesedauer: 6 Minute
0

Ich habe geplant, dass meine Amazon Elastic Container Service (Amazon ECS) -Aufgabe regelmäßig ausgeführt wird. Meine Amazon ECS-Aufgabe ist jedoch nicht aktiviert, und ich erhalte keine Ausführungsprotokolle oder den Verlauf der Aufgaben im Cluster.

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 von AWS CLI verwendest.

Wenn du eine geplante Aufgabe verwendest, ruft Amazon EventBridge die API RunTask für Amazon ECS auf, um die Aufgaben in deinem Namen auszuführen. Deine geplante Amazon ECS-Aufgabe wird möglicherweise aus den folgenden Gründen nicht aufgerufen:

  • Du hast die EventBridge-Zeit- oder den Cron-Ausdruck falsch konfiguriert.
  • Die EventBridge-Regel oder der EventBridge-Zeitplan ruft das Ziel nicht auf.
  • Die API RunTask konnte nicht ausgeführt werden.
  • Die Container-Instance wurde aufgrund von Anwendungsproblemen oder Ressourcenbeschränkungen beendet.
  • Die geplanten Aufgaben sind aufgrund von Kapazitätsbeschränkungen fehlgeschlagen.
  • Die geplanten Aufgaben sind aufgrund von Problemen mit der Netzwerkverbindung fehlgeschlagen.

Vergewissere dich, dass der EventBridge-Cron-Ausdruck korrekt konfiguriert ist

Um den EventBridge-Cron-Ausdruck abzurufen, führe einen der folgenden AWS CLI-Befehle aus.

Wenn du EventBridge-Regeln verwendest, führe den Befehl describe-rule aus:

aws events describe-rule --name example-rule --region example-region

Wenn du EventBridge Scheduler verwendest, führe den Befehl get-schedule aus:

aws scheduler get-schedule --name example-schedule --region example-region

**Hinweis:**Ersetze example-rule durch den Regelnamen, example-schedule durch den Zeitplannamen und example-region durch die AWS-Region.

Überprüfe in der Befehlsausgabe den EventBridge-Cron-Ausdruck im Parameter ScheduleExpression. Stelle sicher, dass du den Regelzeitplan auf die Zeitzone UTC+0 eingestellt hast.

Prüfe, ob die Regel oder der Zeitplan das Ziel nicht aufruft

Um die Amazon CloudWatch-Metriken Invocations und FailedInvocations für die EventBridge-Regel zu überprüfen, führe die folgenden Schritte aus:

  1. Öffne die CloudWatch-Konsole.
  2. Wählen Sie im Navigationsbereich Metriken und dann Alle Metriken aus.
  3. Wählen Sie Ereignisse aus.
  4. Wähle „Nach Regelname“ aus.
  5. Wähle TriggerRules, Invocations und FailedInvocations für die EventBridge-Regel, die die Amazon ECS-Aufgabe ausführt.
  6. Wähle die Registerkarte Grafisch dargestellte Metriken aus.
  7. Wähle für Statistik für jede Metrik SUM aus.

Um die Leistung des EventBridge Schedulers zu überprüfen, überprüfe die CloudWatch-Metriken InvocationAttemptCount, TargetErrorCount und InvocationDroppedCount.

Wenn du FailedInvocations- oder InvocationDroppedCount-Daten siehst, stelle sicher, dass die EventBridge AWS Identity und Access Management (IAM)-Rolle berechtigt ist, die Aufgabe aufzurufen.

Wenn du TargetErrorCount-Daten siehst, liegt ein Problem mit dem Zielaufruf vor. Prüfe, ob die Aufgabe gestartet wurde, gestartet wurde und sofort fehlgeschlagen ist oder nicht abgeschlossen wurde.

Prüfe, ob die RunTask-Aktion fehlgeschlagen ist

Führe die folgenden Schritte aus:

  1. Öffne die AWS-CloudTrail-Konsole.
  2. Wähle im Navigationsbereich die Option Ereignisverlauf aus.
  3. Wähle für Suchattribute die Option Eventname aus.
  4. Gib für Eventnamen eingeben „RunTask“ ein.
  5. Wähle im Zeitbereichsfilter die Zeiten aus, zu denen du mit der Ausführung der geplanten Amazon ECS-Aufgabe gerechnet hast.
  6. Wähle in der Tabelle das Ereignis aus, das du anzeigen möchtest.
  7. Suche in den JSON-Ereignisdatensätzen nach errorMessage oder responseElements.failures.reason, um zu bestätigen, dass die API die geplante Aufgabe nicht aufgerufen hat.
    **Hinweis:**Die Aufgaben-ID für die fehlgeschlagene Aufgabe findest du im Feld responseElements.tasks.taskARN.
  8. Behebe den API-Fehler.

Prüfe, ob der Container nach der Ausführung der Aufgabe beendet wurde

Selbst wenn die Aufgabe erfolgreich ausgeführt wurde, werden Amazon ECS-Aufgaben möglicherweise aufgrund von Anwendungsproblemen oder Ressourcenbeschränkungen gestoppt. Informationen zur Behebung dieses Problems findest du unter Wie behebe ich Probleme, wenn Amazon-ECS-Aufgaben angehalten werden oder nicht gestartet werden, wenn mein Container beendet wird?

Suche nach Problemen mit Kapazitätsengpässen

Probleme mit Kapazitätsbeschränkungen, die dazu führen, dass Aufgaben fehlschlagen, treten auf, wenn der Cluster nicht über genügend Rechenressourcen wie CPU und Arbeitsspeicher verfügt. Oder die Probleme treten auf, wenn andere Workloads, die auf demselben Cluster ausgeführt werden, eine hohe Ressourcenauslastung verursachen. Restriktive Einschränkungen oder Strategien für die Aufgabenverteilung können auch die verfügbaren Ressourcen reduzieren.

Um die Ressourcennutzung zu überwachen, richte Container-Insights auf den Amazon ECS-Clustern ein. Du kannst auch CloudWatch-Alarme einrichten, die dich benachrichtigen, wenn du einen Schwellenwert für die Ressourcennutzung erreichst. Um sicherzustellen, dass Ressourcen verfügbar sind, wenn du sie benötigst, lege CPU- und Speicherreservierungen für Aufgaben fest. Möglicherweise musst du die gewünschte Anzahl für den Amazon ECS-Service erhöhen, um den Cluster zu skalieren, oder Auto Scaling für Cluster verwenden.

Prüfe die bestehenden Einschränkungen bei der Aufgabenplatzierung und passe sie an, sodass sie weniger restriktiv sind. Es hat sich bewährt, kritische Workloads zu priorisieren, unwichtige Workloads neu zu planen und verschiedene Platzierungsstrategien wie Spread, Binpack oder Random zu testen.

Verwende Amazon ECS-Kapazitätsanbieter, um Kapazität für wichtige Workloads zu reservieren. Es hat sich bewährt, Amazon Elastic Compute Cloud (Amazon EC2) Dedicated Instances für Workloads zu verwenden, die isolierte Hardware erfordern. Verwende AWS Fargate für Aufgaben, die verfügbare Ressourcen erfordern.

Suche nach Problemen mit der Netzwerkverbindung

Gehe wie folgt vor, um Probleme mit der Netzwerkverbindung für geplante Aufgaben zu beheben:

  • Stelle sicher, dass die Regeln für Sicherheitsgruppen und Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACL) den erforderlichen eingehenden und ausgehenden Datenverkehr für die Aufgaben zulassen.
  • Stelle sicher, dass du das Internet-Gateway oder das NAT-Gateway für die Virtual Private Cloud (VPC) richtig konfiguriert hast.
  • Überprüfe die Gateway-Routing-Tabellen.
  • Überprüfe die Aufgabendefinitionen für Umgebungsvariablen mit fest codierten IP-Adressen oder Hostnamen. Stelle sicher, dass die vorhandenen IP-Adressen oder Hostnamen korrekt sind und du sie erreichen kannst.

Gehe wie folgt vor, um die Netzwerkverbindung der Container-Instances zu testen:

  1. Verwende SSH, um eine Verbindung zu der Amazon EC2-Instance herzustellen.
  2. Um Befehle auf dem Container remote auszuführen, führe den folgenden Befehl execute-command aus:
    aws ecs execute-command --cluster cluster-name --task task-id --container container-name --command "/bin/bash" --interactive
    **Hinweis:**Ersetze cluster-name durch den Clusternamen, task-id durch die Task-ID und container-name durch den Container-Instance-Namen.
  3. Führe einen der folgenden Befehle aus, um die Verbindung zu überprüfen:
    curl -v http://example.com
    -oder-
    nslookup example.com
    -oder-
    nc -zv example.com 80
    Hinweis: Ersetze example.com durch die Domain.
  4. Überprüfe die DNS-Auflösung und das Routing, um Netzwerkprobleme zu identifizieren.

Um die Konnektivität zu vereinfachen, führe Aufgaben auf Fargate statt auf Amazon EC2 aus. Mit Fargate musst du die zugrunde liegende Infrastruktur nicht verwalten. Oder verwende VPC-Endpunkte, um eine Verbindung zu Diensten ohne Internet-Gateway, NAT-Gerät, VPN-Verbindung oder AWS Direct Connect-Verbindung herzustellen.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten