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 festlegen, 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 Taskausfällen 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 dem Wert eventName von 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 unter Erste Schritte mit EventBridge im EventBridge Amazon-Benutzerhandbuch.

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 (resetOnHealthyTaskisttrue) angerechnet. Wenn der resetOnHealthyTask Wert „ist“false, häufen sich alle Aufgabenfehler, unabhängig davon, ob zwischen den Fehlern fehlerfreie Aufgaben gestartet werden.

  • 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 Health Checks und Container Health Checks.

    • 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 Deployment Circuit Breaker-Methode 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 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 Deployment Circuit Breaker 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 Sie einen Dienst mit einer benutzerdefinierten Deployment Circuit Breaker-Konfiguration erstellen, 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 Deployment Circuit Breaker verwendet einen Ausfallschwellenwert, um zu bestimmen, wann die Bereitstellung in einen bestimmten FAILED Status versetzt werden muss. Sie können sowohl die Zählung von Ausfällen als auch den Schwellenwert selbst konfigurieren.

Modus zur Zählung von Fehlern

Die resetOnHealthyTask Einstellung steuert, wie der Schutzschalter Aufgabenausfälle während einer Bereitstellung 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 ist nützlich für Anwendungen, bei denen vor der Stabilisierung zeitweise Startfehler auftreten können.

false

Aufgabenfehler häufen sich während der Bereitstellung. Die Anzahl der Fehler wird nie zurückgesetzt, auch wenn fehlerfreie Aufgaben zwischen Ausfällen gestartet werden. Dieser Modus ermöglicht eine schnellere Erkennung, wenn ein Fehlermuster auf eine problematische Bereitstellung hindeutet.

Konfiguration der Schwellenwerte

Die thresholdConfiguration Einstellung legt fest, wann der Schutzschalter ausgelöst wird. Sie enthält einetype, die bestimmt, wie der Schwellenwert berechnet wird, und einevalue, die angibt, welcher Prozentsatz oder welche Anzahl verwendet werden soll.

BOUNDED_PERCENT (Standard)

Amazon ECS value multipliziert mit der Anzahl der zuletzt gewünschten Services, um die Ausfallschwelle zu berechnen. Das Ergebnis wird auf ein Minimum von 3 und ein Maximum von 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 die Ausfallschwelle zu berechnen. Es gibt keine Mindest- oder Höchstgrenze für das Ergebnis. Verwenden Sie diesen Typ für Dienste mit einer hohen gewünschten Anzahl, für die ein proportionaler Schwellenwert ohne die Obergrenze von 200 erforderlich ist.

COUNT

Amazon ECS verwendet diese value direkt als Fehlerschwelle. Der Schwellenwert bleibt unabhängig von der Anzahl der gewünschten Dienste festgelegt. Verwenden Sie diesen Typ, wenn Sie eine genaue Anzahl tolerierter Fehler angeben 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 seiner Berechnung kontinuierlich die Anzahl der zuletzt gewünschten Services.

Wie berechnet BOUNDED_PERCENT den Schwellenwert

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

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

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

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

Gewünschte Aufgabenanzahl Berechnung Threshold

1

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

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 Aufgaben den RUNNING Status nicht erreichen, erhöht der Auslöseschalter die Anzahl der Fehler 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 Dienst

    • 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.