Service-Drosselungslogik - Amazon ECS

Service-Drosselungslogik

Der Amazon ECS-Service-Scheduler enthält eine Logik, die eine Begrenzung einführt, wie oft Serviceaufgaben gestartet werden, wenn sie wiederholt nicht gestartet werden können.

Wenn Aufgaben für einen ECS-Service wiederholt nicht in den RUNNING-Status übergehen (direkt von einem PENDING- zu einem STOPPED-Status), wird die Zeit zwischen den folgenden Neustartversuchen schrittweise bis zu einem Maximum von 15 Minuten erhöht. Diese Höchstdauer kann sich in Zukunft ändern. Durch dieses Verhalten werden die Auswirkungen von nicht startbaren Aufgaben auf Ihre Amazon ECS-Cluster-Ressourcen oder die Fargate-Infrastrukturkosten reduziert. Wenn Ihr Service die Drosselungslogik initiiert, erhalten Sie die folgende Service-Ereignismeldung:

(service service-name) is unable to consistently start tasks successfully.

Amazon ECS hindert einen fehlgeschlagenen Service niemals daran, es erneut zu versuchen. Es wird auch nicht versucht, es auf andere Weise zu verändern, außer der Erhöhung der Zeit zwischen den Neustarts. Die Service-Drosselungslogik stellt keine vom Benutzer einstellbaren Parameter bereit.

Wenn Sie Ihren Service auf eine neue Aufgabendefinition aktualisieren, kehrt der Service sofort zu einem normalen, ungedrosselten Zustand zurück. Weitere Informationen finden Sie unter Aktualisierung eines Service.

Nachfolgend finden Sie einige häufige Auslöser für diese Logik:

  • Der Amazon-ECS-Container-Agent kann Ihr Docker-Image für die Aufgabe nicht abrufen. Dies kann an einem ungültigen Container-Image-Namen, -Image oder -Tag oder an einem Mangel an privater Registry-Authentifizierung oder -Berechtigungen liegen. In diesem Fall wird auch CannotPullContainerError in Ihren Fehlern für gestoppte Aufgaben angezeigt.

Wichtig

Aufgaben, die angehalten werden, nachdem sie den RUNNING-Status erreicht haben, starten weder die Drosselungslogik noch die zugehörige Service-Ereignismeldung. Wenn beispielsweise die Zustandsprüfungen von Elastic Load Balancing für einen Service fehlgeschlagen sind, wird eine Aufgabe als fehlerhaft eingestuft und Amazon ECS deregistriert sie und stoppt die Aufgabe. Zu diesem Zeitpunkt werden die Aufgaben nicht gedrosselt. Auch wenn ein Container-Befehl einer Aufgabe sofort mit einem Beendigungscode ungleich Null beendet wird, erhält die Aufgabe bereits den RUNNING-Status. Aufgaben, die sofort fehlschlagen, weil Befehlsfehler nicht die Drosselung oder die Serviceereignismeldung verursachen.