Ermitteln Sie den Zustand von Amazon ECS-Aufgaben mithilfe von Container-Zustandsprüfungen - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ermitteln Sie den Zustand von Amazon ECS-Aufgaben mithilfe von Container-Zustandsprüfungen

Wenn Sie eine Aufgabendefinition erstellen, können Sie eine Zustandsprüfung für Ihre Container konfigurieren. Zustandsprüfung sind Befehle, die lokal in einem Container ausgeführt werden und den Zustand und die Verfügbarkeit von Anwendungen überprüfen.

Der Amazon-ECS-Container-Agent überwacht die in der Aufgabendefinition angegebenen Zustandsprüfungen und erstellt Berichte darüber. Amazon ECS überwacht keine Docker-Zustandsprüfungen, die in ein Container-Image eingebettet, aber nicht in der Container-Definition angegeben sind. Parameter für die Zustandsprüfung, die in einer Container-Definition angegeben sind, überschreiben Docker-Zustandsprüfungen, die im Container-Image vorhanden sind.

Wenn in einer Aufgabendefinition eine Zustandsprüfung definiert ist, führt der Container die Zustandsprüfung innerhalb des Containers aus und wertet dann den Exit-Code aus, um den Zustand der Anwendung zu ermitteln.

Die Zustandsprüfung besteht aus den folgenden Parametern:

  • Befehl – Der vom Container ausgeführte Befehl, um zu bestimmen, ob er fehlerfrei ist. Das Zeichenfolge-Array kann mit CMD beginnen, um die Befehlsargumente direkt auszuführen, oder mit CMD-SHELL, um den Befehl mit der Standard-Shell des Containers auszuführen. Verwenden Sie CMD-SHELL, wenn Sie Shell-Features wie Pipes, Umleitungen, Befehlsketten oder die Erweiterung von Umgebungsvariablen benötigen. CMD-SHELL ermöglicht es Ihnen beispielsweise, Befehle wie curl -f http://localhost/ || exit 1 zu verwenden, bei denen die Shell den ||-Operator interpretiert. Verwenden Sie CMD für einfache Befehle, für die keine Shell-Interpretation erforderlich ist.

  • Intervall – Der Zeitraum (in Sekunden) zwischen den Zustandsprüfungen.

  • Timeout – Der Zeitraum (in Sekunden), der angibt, wie lange gewartet wird, bis eine Zustandsprüfung erfolgreich ist, bevor sie als fehlgeschlagen betrachtet wird.

  • Wiederholungsversuche – Wie oft eine fehlgeschlagene Zustandsprüfung wiederholt werden soll, bevor der Container als fehlerhaft betrachtet wird.

  • Startzeitraum – Der optionale Übergangszeitraum, der angibt, wie lange der Container Zeit für einen Bootstrap hat, bevor fehlgeschlagene Zustandsprüfungen der maximalen Anzahl an Wiederholungen angerechnet werden.

    Wenn eine Zustandsprüfung innerhalb der startPeriod erfolgreich ist, wird die Container als fehlerfrei betrachtet und alle nachfolgenden Ausfälle werden bei der maximal zulässigen Anzahl von Wiederholungen berücksichtigt.

Informationen zur Angabe einer Zustandsprüfung in einer Aufgabendefinition finden Sie unter Gesundheitscheck.

Im Folgenden werden die möglichen Zustandwerte für einen Container beschrieben:

  • HEALTHY – Die Container-Zustandsprüfung wurde erfolgreich bestanden.

  • UNHEALTHY – Die Container-Zustandsprüfung ist fehlgeschlagen.

  • UNKNOWN – Die Container-Zustandsprüfung wird ausgewertet, es ist keine Container-Zustandsprüfung definiert oder Amazon ECS verfügt nicht über den Zustandstatus des Containers.

Die Befehle zur Zustandsprüfung werden auf dem Container ausgeführt. Daher müssen Sie die Befehle in das Container-Image aufnehmen.

Die Zustandsprüfung stellt über die Loopback-Schnittstelle des Containers unter localhost oder 127.0.0.1 eine Verbindung zur Anwendung her Der Beendigungscode 0 bedeutet eine erfolgreiche Ausführung, bei einem Beendigungscode ungleich Null ist ein Fehler aufgetreten.

Berücksichtigen Sie bei der Verwendung von Container-Zustandsprüfungen die folgenden Punkte:

  • Container Zustandsprüfungen erfordern Version 1.17.0 oder höher des Amazon-ECS-Container-Agenten.

  • Container-Zustandsprüfungen werden für Fargate-Aufgaben unterstützt, wenn Sie die Linux-Plattformversion 1.1.0 oder höher oder die Windows-Plattformversion 1.1.0 oder höher verwenden

So bestimmt Amazon ECS den Zustand von Aufgaben

Container, die essenziell sind und in der Aufgabendefinition den Befehl zur Zustandsprüfung enthalten, sind die einzigen, die bei der Bestimmung des Aufgabenzustands berücksichtigt werden.

Die folgenden Regeln werden der Reihe nach evaluiert:

  1. Wenn der Status eines essenziellen Containers UNHEALTHY ist, dann ist der Aufgabenstatus UNHEALTHY.

  2. Wenn der Status eines essenziellen Containers UNKNOWN ist, dann ist der Aufgabenstatus UNKNOWN.

  3. Wenn der Status aller essenziellen Containers HEALTHY ist, dann ist der Aufgabenstatus HEALTHY.

Betrachten Sie das folgende Beispiel für den Zustand einer Aufgabe mit zwei essenziellen Containern.

Zustand von Container 1 Zustand von Container 2 Zustand der Aufgabe
UNHEALTHY UNKNOWN UNHEALTHY
UNHEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY

Betrachten Sie das folgende Beispiel für den Zustand einer Aufgabe mit 3 Containern.

Zustand von Container 1 Zustand von Container 2 Zustand von Container 3 Zustand der Aufgabe
UNHEALTHY UNKNOWN UNKNOWN UNHEALTHY
UNHEALTHY UNKNOWN HEALTHY UNHEALTHY
UNHEALTHY HEALTHY HEALTHY UNHEALTHY
HEALTHY UNKNOWN HEALTHY UNKNOWN
HEALTHY UNKNOWN UNKNOWN UNKNOWN
HEALTHY HEALTHY HEALTHY HEALTHY

So sind Zustandsprüfungen von Agent-Verbindungsabbrüchen betroffen

Wenn der Amazon-ECS-Container-Agent vom Amazon-ECS-Service getrennt wird, führt es nicht dazu, dass ein Container in einen UNHEALTHY-Status wechselt. Dies ist beabsichtigt, um sicherzustellen, dass Container auch bei Neustarts der Agenten oder bei vorübergehender Nichtverfügbarkeit weiterhin ausgeführt werden. Der Status der Zustandsprüfung ist die Antwort „zuletzt gehört von“ des Amazon-ECS-Agenten. Wenn der Container also vor dem Trennen als HEALTHY berücksichtigt wurde, bleibt dieser Status bestehen, bis der Agent wieder eine Verbindung herstellt und eine weitere Zustandsprüfung erfolgt. Es werden keine Annahmen über den Status der Zustandsprüfungen der Container getroffen.