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 zu erstellen und zu überwachen EventBridge Regel mit einem eventName von 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 in der Amazonas EventBridge Benutzerleitfaden.

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 die Fehlerschwelle angerechnet (resetOnHealthyTask ist true). Wann resetOnHealthyTask ist false, alle Aufgabenfehler häufen sich an, unabhängig davon, ob fehlerfreie Aufgaben zwischen Ausfällen 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 Zustandsprüfungen für Dienste und Integritätsprüfungen von Containern.

    • 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 zum Auslösen des Schutzschalters bei einer Wartung 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 Auslöseschalter mit dem verwenden CloudWatch Option. Weitere Informationen finden Sie unter Erstellen eines Services mit definierten Parametern und create-service in der AWS Command Line Interface -Referenz.

Folgendes create-service AWS CLI Das Beispiel zeigt, wie ein Linux-Dienst 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}"

Folgendes create-service AWS CLI Das Beispiel zeigt, wie Sie einen Service mit einer benutzerdefinierten Konfiguration für den Einsatz von Schutzschaltern erstellen, die 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 Auslöseschalter bestimmt anhand einer Ausfallschwelle, wann der Einsatz auf einen FAILED Bundesstaat. Sie können sowohl die Zählung von Ausfällen als auch den Schwellenwert selbst konfigurieren.

Modus zum Zählen von Fehlern

Der resetOnHealthyTask Die 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 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 Die Einstellung definiert, wann der Leistungsschalter auslöst. Sie enthält eine type das bestimmt, wie der Schwellenwert berechnet wird und eine value das gibt den zu verwendenden Prozentsatz oder die Anzahl an.

BOUNDED_PERCENT (Standard)

Amazon ECS multipliziert value berechnet den Schwellenwert für die Berechnung des Fehlerschwellenwerts anhand der zuletzt von einem Service gewünschten Anzahl. Das Ergebnis ist auf mindestens 3 und maximal 200 begrenzt. Dies ist der Standardtyp mit einem Standardwert von 50.

UNBOUNDED_PERCENT

Amazon ECS multipliziert value berechnet den Schwellenwert für die Berechnung des Fehlerschwellenwerts anhand der zuletzt von einem Service gewünschten Anzahl. 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 direkt als Ausfallschwelle. Der Schwellenwert bleibt unabhängig von der Anzahl der gewünschten Dienste 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_PERCENT und UNBOUNDED_PERCENT), der gültige Bereich für value ist 1—100. Während einer Bereitstellung verwendet Amazon ECS bei der Berechnung kontinuierlich die neueste Anzahl der gewünschten Services.

Wie GEBUNDEN_PROZENT berechnet den Schwellenwert

Wenn Sie die Standardeinstellung verwenden BOUNDED_PERCENT Typ Schwellenwert, der Auslöseschalter berechnet 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)

Mit UNBOUNDED_PERCENT, gilt dieselbe Berechnung, 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 das nicht erreichen RUNNING In diesem Zustand erhöht der Auslöseschutzschalter 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 Bedienung

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