View a markdown version of this page

So erkennt der Schutzschalter in Amazon ECS fehlgeschlagene Bereitstellungen - 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.

So erkennt der Schutzschalter in Amazon ECS fehlgeschlagene Bereitstellungen

Beim Bereitstellungsschutzschalter handelt es sich um einen Mechanismus zur fortlaufenden Aktualisierung, der feststellt, ob die Aufgaben einen stabilen Status erreichen. Der Bereitstellungsschutzschalter verfügt über eine Option, mit der eine fehlgeschlagene Bereitstellung automatisch auf die Bereitstellung zurückgesetzt wird, die sich im Status COMPLETED befindet. Sie können anpassen, wie der Schutzschalter Ausfälle zählt und bei welchem Schwellenwert er ausgelöst wird, sodass das Rollback-Verhalten den Starteigenschaften Ihrer Anwendung und Ihrer Toleranz gegenüber Aufgabenfehlern entspricht.

Wenn sich der Status einer Servicebereitstellung ändert, sendet Amazon ECS ein Ereignis zur Änderung des Status der Servicebereitstellung an EventBridge. Dies bietet eine programmgesteuerte Möglichkeit, den Status Ihrer Servicebereitstellungen zu überwachen. Weitere Informationen finden Sie unter Statussänderungs-Ereignisse der Amazon-ECS-Servicebereitstellung. Wir empfehlen Ihnen, eine EventBridge Regel mit einem eventName oder zu erstellen und zu überwachen, SERVICE_DEPLOYMENT_FAILED sodass Sie manuelle Maßnahmen ergreifen können, um Ihre Bereitstellung zu starten. Weitere Informationen finden Sie EventBridge im EventBridge Amazon-Benutzerhandbuch unter Erste Schritte mit.

Wenn der Bereitstellungsschutzschalter feststellt, dass eine Bereitstellung fehlgeschlagen ist, sucht er nach der letzten Bereitstellung, die sich im Status COMPLETED befindet. Dies ist die Bereitstellung, die als Rollback-Bereitstellung verwendet wird. Wenn das Rollback beginnt, ändert sich die Bereitstellung von COMPLETED zu IN_PROGRESS. Das bedeutet, dass für die Bereitstellung kein weiterer Rollback in Frage kommt, bis der Status COMPLETED erreicht wurde. Wenn der Bereitstellungsschutzschalter keine Bereitstellung findet, die sich in im Status COMPLETED befindet, startet der Schutzschalter keine neuen Aufgaben und die Bereitstellung wird angehalten.

Wenn Sie einen Service erstellen, verfolgt der Scheduler die Aufgaben, die nicht gestartet werden konnten, in zwei Phasen.

  • Phase 1 – Der Scheduler überwacht die Aufgaben, um festzustellen, ob sie in den Status RUNNING übergehen.

    • Erfolgreich – Es besteht die Möglichkeit, dass die Bereitstellung in den Status ABGESCHLOSSEN übergeht, da mehrere Aufgaben in den Status RUNNING übergegangen sind. Die Fehlerkriterien werden übersprungen und der Schutzschalter wechselt zur Stufe 2.

    • Fehler — Standardmäßig werden aufeinanderfolgende Aufgaben, die nicht in den Status RUNNING übergehen, auf den Fehlerschwellenwert (resetOnHealthyTaskstrue) angerechnet. Wenn dieser resetOnHealthyTask Wert festgelegt istfalse, häufen sich alle Aufgabenfehler, unabhängig davon, ob zwischen den Ausfällen fehlerfreie Aufgaben beginnen.

  • Phase 2 – Die Bereitstellung geht in diese Phase über, wenn sich mindestens eine Aufgabe im Status RUNNING befindet. Der Schutzschalter überprüft die Zustandsprüfungen für die Aufgaben in der aktuellen Bereitstellung, die gerade evaluiert wird. Bei den validierten Zustandsprüfungen handelt es sich um Elastic Load Balancing, AWS Cloud Map Service-Integritätsprüfungen und Container-Integritätsprüfungen.

    • Erfolgreich – Es gibt mindestens eine Aufgabe im Status RUNNING, deren Zustandsprüfungen bestanden wurden.

    • Fehlgeschlagen – Die Aufgaben, die aufgrund fehlgeschlagener Zustandsprüfungen ersetzt wurden, haben den Schwellenwert für Fehler erreicht.

Beachten Sie Folgendes, wenn Sie die Methode zur Bereitstellung eines Schutzschalters für einen Service verwenden. EventBridge generiert die Regel.

  • Die DescribeServices-Antwort bietet Einblick in den Status einer Bereitstellung, den rolloutState und rolloutStateReason. Wenn eine neue Bereitstellung gestartet wird, beginnt der Rollout-Status in einem IN_PROGRESS-Zustand. Wenn der Service einen stabilen Zustand erreicht, wechselt der Rollout-Status zu COMPLETED. Wenn der Service keinen stabilen Status erreicht und der Schutzschalter aktiviert wird, wechselt die Bereitstellung in einen FAILED-Status. Eine Bereitstellung in einem FAILED-Status startet keine neuen Aufgaben.

  • Zusätzlich zu den Ereignissen zur Statusänderung der Servicebereitstellung, die Amazon ECS für gestartete und abgeschlossene Bereitstellungen sendet, sendet Amazon ECS auch ein Ereignis, wenn eine Bereitstellung mit aktiviertem Schutzschalter fehlschlägt. Diese Ereignisse enthalten Details dazu, warum eine Bereitstellung fehlgeschlagen ist oder ob eine Bereitstellung aufgrund eines Rollbacks gestartet wurde. Weitere Informationen finden Sie unter Statussänderungs-Ereignisse der Amazon-ECS-Servicebereitstellung.

  • Wenn eine neue Bereitstellung gestartet wird, weil eine vorherige Bereitstellung fehlgeschlagen ist und ein Rollback aufgetreten ist, zeigt das reason-Feld des Ereignisses für die Statusänderung der Service-Bereitstellung an, dass die Bereitstellung aufgrund eines Rollbacks gestartet wurde.

  • Der Bereitstellungsschutzschalter wird nur für Amazon-ECS-Services unterstützt, die den Bereitstellungscontroller für fortlaufende Aktualisierung (ECS) verwenden.

  • Sie müssen die Amazon ECS-Konsole verwenden oder die, AWS CLI wenn Sie den Deployment Circuit Breaker mit der CloudWatch Option verwenden. Weitere Informationen finden Sie unter Erstellen eines Services mit definierten Parametern und create-service in der AWS Command Line Interface -Referenz.

Das folgende create-service AWS CLI Beispiel zeigt, wie ein Linux-Service erstellt wird, wenn der Bereitstellungs-Schutzschalter mit der Rollback-Option verwendet wird.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Das folgende create-service AWS CLI Beispiel zeigt, wie ein Dienst mit einer benutzerdefinierten Konfiguration für den Einsatz eines Leistungsschalters erstellt wird, der eine feste Fehleranzahl von 5 und eine kumulative Fehlerverfolgung verwendet.

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 10 \ --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true,resetOnHealthyTask=false,thresholdConfiguration={type=COUNT,value=5}}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

Beispiel:

Bereitstellung 1 befindet sich im Status COMPLETED.

Bereitstellung 2 kann nicht gestartet werden, sodass der Schutzschalter per Rollback auf Bereitstellung 1 zurückkehrt. Bereitstellung 1 wechselt in den Status IN_PROGRESS.

Bereitstellung 3 wird gestartet und es gibt keine Bereitstellung im Status COMPLETED, sodass Bereitstellung 3 kein Rollback oder Starten von Aufgaben durchführen kann.

Fehlerschwellenwert

Der Einsatzschalter bestimmt anhand eines Fehlerschwellenwerts, wann der Einsatz in einen bestimmten FAILED Zustand versetzt werden muss. Sie können sowohl die Zählung von Ausfällen als auch den Schwellenwert selbst konfigurieren.

Modus zum Zählen von Fehlern

Die resetOnHealthyTask Einstellung steuert, wie der Schutzschalter während eines Einsatzes Fehlfunktionen zählt.

true (Standard)

Die Anzahl der Fehler wird jedes Mal auf 0 zurückgesetzt, wenn eine Aufgabe einen fehlerfreien Zustand erreicht. Nur aufeinanderfolgende Fehler werden auf den Schwellenwert angerechnet. Dieser Modus eignet sich für Anwendungen, bei denen es vor der Stabilisierung gelegentlich zu Startfehlern kommen kann.

false

Während der Bereitstellung häufen sich Aufgabenfehler. Die Anzahl der Fehler wird nie zurückgesetzt, auch nicht, wenn zwischen den Ausfällen fehlerfreie Aufgaben gestartet werden. In diesem Modus wird schneller erkannt, wenn ein Fehlermuster auf eine problematische Bereitstellung hindeutet.

Konfiguration des Schwellenwerts

Die thresholdConfiguration Einstellung definiert, wann der Schutzschalter auslöst. Sie enthält einetype, die bestimmt, wie der Schwellenwert berechnet wird, und einevalue, die den zu verwendenden Prozentsatz oder die Anzahl angibt.

BOUNDED_PERCENT (Standard)

Amazon ECS value multipliziert mit der letzten Anzahl der gewünschten Services, um den Schwellenwert für Fehler zu berechnen. Das Ergebnis ist auf mindestens 3 und maximal 200 begrenzt. Dies ist der Standardtyp mit einem Standardwert von 50.

UNBOUNDED_PERCENT

Amazon ECS value multipliziert mit der Anzahl der zuletzt gewünschten Services, um den Schwellenwert für den Ausfall zu berechnen. Für das Ergebnis gibt es keine Mindest- oder Höchstgrenze. Verwenden Sie diesen Typ für Dienste mit großen gewünschten Anzahlen, für die ein proportionaler Schwellenwert ohne die Obergrenze von 200 erforderlich ist.

COUNT

Amazon ECS verwendet value ihn direkt als Fehlerschwelle. Der Schwellenwert bleibt unabhängig von der Anzahl der gewünschten Services fest. Verwenden Sie diesen Typ, wenn Sie eine genaue Anzahl tolerierter Fehler ermitteln möchten, z. B. einen niedrigeren Schwellenwert für schnellere Rollbacks in Entwicklungsumgebungen.

Für die Prozenttypen (BOUNDED_PERCENTundUNBOUNDED_PERCENT) value liegt der gültige Bereich für zwischen 1 und 100. Während einer Bereitstellung verwendet Amazon ECS bei der Berechnung kontinuierlich die aktuelle Anzahl der gewünschten Services.

Wie berechnet BOUNDED_PERCENT den Schwellenwert

Wenn Sie den BOUNDED_PERCENT Standard-Schwellenwerttyp verwenden, berechnet der Notfallschalter den Schwellenwert anhand der folgenden Formel.

Minimum threshold (3) <= (value/100) * desired task count => Maximum threshold (200)

Wenn das Ergebnis der Berechnung kleiner als 3 ist, wird der Schwellenwert auf 3 festgelegt. Wenn das Ergebnis größer als 200 ist, wird der Schwellenwert auf 200 festgelegt. Andernfalls wird der Schwellenwert auf den berechneten Wert gesetzt (aufgerundet).

Die folgende Tabelle enthält Beispiele, in denen der Standardwert 50 verwendet wird.

Gewünschte Aufgabenanzahl Berechnung Threshold

1

3 <= 0.5 * 1 => 200
3 (der berechnete Wert ist kleiner als das Minimum)

25

3 <= 0.5 * 25 => 200
13 (Der Wert wird aufgerundet)

400

3 <= 0.5 * 400 => 200
200 (Der berechnete Wert ist größer als das Maximum)

800

3 <= 0.5 * 800 => 200
200 (Der berechnete Wert ist größer als das Maximum)

Bei gilt dieselbe BerechnungUNBOUNDED_PERCENT, jedoch ohne die Mindest- und Höchstgrenzen. Beispielsweise hätte ein Dienst mit einer gewünschten Anzahl von 800 und einem Wert von 50 einen Schwellenwert von 400.

Es gibt zwei Phasen für die Überprüfung des Bereitstellungsstatus.

  1. Der Bereitstellungs-Leistungsschalter überwacht Aufgaben, die Teil der Bereitstellung sind und sucht nach Aufgaben, die sich im RUNNING-Zustand befinden. Der Scheduler ignoriert die Fehlerkriterien, wenn sich eine Aufgabe in der aktuellen Bereitstellung im RUNNING-Zustand befindet und fährt mit der nächsten Stufe fort. Wenn die Aufgaben den RUNNING Status nicht erreichen, erhöht der Schutzschalter die Anzahl der Ausfälle um eins. Wenn die Fehleranzahl dem Schwellenwert entspricht, wird die Bereitstellung als FAILED markiert.

  2. Diese Stufe tritt ein, wenn es eine oder mehrere Aufgaben im Status RUNNING gibt. Der Bereitstellungs-Leistungsschalter führt Zustandsprüfungen der folgenden Ressourcen für die Aufgaben in der aktuellen Bereitstellung durch:

    • Elastic Load Balancing-Load Balancer

    • AWS Cloud Map Service

    • Zustandsprüfungen für Amazon-ECS-Container

    Wenn eine Zustandsprüfung für die Aufgabe fehlschlägt, erhöht der Bereitstellungs-Leistungsschalter die Fehleranzahl um eins. Wenn die Fehleranzahl dem Schwellenwert entspricht, wird die Bereitstellung als FAILED markiert.

Wenn der Schwellenwert beispielsweise 3 ist, startet der Schutzschalter mit der Fehleranzahl, die auf 0 gesetzt ist. Wenn eine Aufgabe den Status RUNNING nicht erreicht, erhöht der Bereitstellungs-Schutzschalter die Fehleranzahl um eins. Wenn die Fehleranzahl 3 entspricht, wird die Bereitstellung als FAILED markiert.

Weitere Beispiele zur Verwendung der Rollback-Option finden Sie unter Ankündigung des Amazon-ECS-Bereitstellungsschutzschalters.