Aktualisieren eines Services mit der klassischen Konsole - Amazon Elastic Container Service

Aktualisieren eines Services mit der klassischen Konsole

Wichtig

Amazon ECS bietet eine neue Konsolenerfahrung für die Aktualisierung eines Services. Weitere Informationen finden Sie unter Aktualisieren eines Services mit der neuen Konsole.

Sie können einen vorhandenen Service während seiner Ausführung aktualisieren, um einige der Serverkonfigurationsparameter zu ändern, etwa die Anzahl der vom Service verwalteten Aufgaben, welche Aufgabendefinition von den Aufgaben verwendet wird, oder auch die Plattformversion, wenn Ihre Aufgaben den Starttyp Fargate verwenden. Ein Service, der eine Linux-Plattformversion verwendet, kann nicht aktualisiert werden, um eine Windows-Plattformversion zu verwenden und umgekehrt. Wenn Sie eine Anwendung haben, die mehr Kapazität benötigt, können Sie Ihren Service skalieren. Wenn Sie über ungenutzte Kapazitäten verfügen, können Sie die Anzahl der gewünschten Aufgaben in Ihrem Service reduzieren und Ressourcen freigeben und herunterskalieren.

Wenn Sie ein aktualisiertes Container-Image für Ihre Aufgaben verwenden möchten, können Sie eine neue Aufgabendefinitionsvision mit diesem Abbild erstellen und es mithilfe der Option Force new deployment (Neue Bereitstellung erzwingen) in der Konsole für Ihren Service bereitstellen.

Der Service Scheduler verwendet die minimalen gesunden Prozent und maximalen Prozentparameter (in der Bereitstellungskonfiguration für den Service), um die Bereitstellungsstrategie festzulegen.

Wenn ein Service den Bereitstellungstyp laufende Aktualisierung (ECS) verwendet, stellen die minimalen gesunden Prozent eine untere Grenze für die Anzahl der Aufgaben in einem Service dar, die während einer Bereitstellung im Zustand RUNNING verbleiben müssen, als Prozentsatz der gewünschten Anzahl von Aufgaben (aufgerundet auf die nächste ganze Zahl). Der Parameter gilt auch, wenn sich Container-Instances im Zustand DRAINING befinden, wenn der Service Aufgaben mit dem Starttyp EC2 enthält. Mit diesem Parameter können Sie die Bereitstellung vornehmen, ohne zusätzliche Cluster-Kapazität zu nutzen. Wenn Ihr Service z. B. eine gewünschte Anzahl von vier Aufgaben und einen Mindestprozentsatz an gesunden Aufgaben von 50 % hat, könnte der Planer zwei bestehende Aufgaben stoppen, um Cluster-Kapazität freizugeben, bevor er zwei neue Aufgaben startet. Aufgaben für Services, die keinen Load Balancer verwenden, werden als fehlerfrei betrachtet, wenn sie sich im Status RUNNING befinden. Aufgaben für Services, die einen Load Balancer verwenden, gelten als gesund, wenn sie sich im Zustand RUNNING befinden und vom Load Balancer als gesund gemeldet werden. Der Standardwert für den minimalen gesunden Prozentsatz ist 100 Prozent.

Wenn ein Service den Bereitstellungstyp laufende Aktualisierung (ECS) verwendet, stellt der Parameter maximale Prozent eine Obergrenze für die Anzahl der Aufgaben in einem Service dar, die im Zustand RUNNING oder PENDING während einer Bereitstellung zulässig sind, und zwar als Prozentsatz der gewünschten Anzahl von Aufgaben (abgerundet auf die nächste ganze Zahl). Der Parameter gilt auch, wenn sich Container-Instances im Zustand DRAINING befinden, wenn der Service Aufgaben mit dem Starttyp EC2 enthält. Mit diesem Parameter können Sie die Stapelgröße der Bereitstellung definieren. Wenn Ihr Service beispielsweise eine gewünschte Anzahl von vier Aufgaben und einen maximalen Prozentwert von 200 Prozent hat, kann der Planer vier neue Aufgaben starten, bevor er die vier älteren Aufgaben stoppt. Voraussetzung dafür ist, dass die dafür erforderlichen Cluster-Ressourcen verfügbar sind. Der Standardwert für den maximalen Prozentsatz beträgt 200 Prozent.

Wenn ein Service den Blau/Grün-Bereitstellungstyp (CODE_DEPLOY) und Aufgaben den Starttyp EC2 verwenden, werden der mindestens fehlerfreie Prozentwert und maximale fehlerfreie Prozentwert als Standardwerte gesetzt. Sie dienen nur dazu, die untere und obere Grenze für die Anzahl der Aufgaben im Service zu definieren, die im Zustand RUNNING verbleiben, während sich die Container-Instances im Status DRAINING befinden. Wenn die Aufgaben im Service den Starttyp Fargate verwenden, werden die Werte für minimalen fehlerfreien Prozent und maximalen Prozent nicht verwendet. Sie sind derzeit bei der Beschreibung Ihres Services sichtbar.

Wenn der Service Scheduler während einer Aktualisierung eine Aufgabe ersetzt, entfernt der Service zuerst die Aufgabe aus dem Load Balancer (falls verwendet) und wartet, bis die Verbindungen ausgelaufen sind. Dann wird das Äquivalent von docker stop an die Container ausgegeben, die in der Aufgabe ausgeführt werden. Das löst ein SIGTERM-Signal und eine Zeitbeschränkung von 30 Sekunden aus, nach der SIGKILL gesendet und ein Stoppen der Container erzwungen wird. Wenn der Container das SIGTERM-Signal normal verarbeitet und innerhalb von 30 Sekunden nach Erhalt des Signals schließt, wird das SIGKILL-Signal gesendet. Der Service-Scheduler startet und stoppt Aufgaben entsprechend der Definition in Ihren Einstellungen für den mindestens fehlerfreien Prozentsatz und den maximalen Prozentsatz.

Wichtig

Wenn Sie die von den Containern in einer Aufgabendefinition verwendeten Ports ändern, müssen Sie eventuell die Sicherheitsgruppen für die Container-Instances aktualisieren, damit diese mit den aktualisierten Ports funktionieren.

Sie können das AWS CLI oder SDK verwenden, um die Konfiguration des Load Balancer zu ändern. Informationen zum Ändern der Konfiguration finden Sie unter UpdateService in der API-Referenz zu Amazon Elastic Container Service.

Wenn Sie die Aufgabendefinition für den Service aktualisieren, müssen der Containername und der Container-Port, die bei der Erstellung des Services angegeben wurden, in der Aufgabendefinition bleiben.

Um den Containernamen oder den Containerport, die der Load Balancer-Konfiguration eines Service zugeordnet sind, zu ändern, müssen Sie einen neuen Service erstellen.

Amazon ECS aktualisiert die Sicherheitsgruppen nicht automatisch, die mit Elastic Load Balancing-Load Balancern oder Amazon-ECS-Container-Instances verbunden sind.

So aktualisieren Sie einen laufenden Service

  1. Öffnen Sie die Amazon ECS-Konsole unter https://console.aws.amazon.com/ecs/.

  2. Wählen Sie auf der Navigationsleiste die Region aus, in der sich Ihr Cluster befindet.

  3. Klicken Sie im Navigationsbereich auf Clusters (Cluster).

  4. Wählen Sie auf der Seite Clusters den Namen des Clusters aus, in dem sich Ihr Service befindet.

  5. Wählen Sie auf der Seite Cluster: name Services aus.

  6. Aktivieren Sie das Kontrollkästchen links neben dem zu aktualisierenden Service und wählen Sie Aktualisieren aus.

  7. Auf der Seite Configure service werden Ihre Service-Informationen vorausgefüllt. Ändern Sie die Aufgabendefinition, die Kapazitätsanbieterstrategie, die Plattformversion, die Bereitstellungskonfiguration oder die Anzahl der gewünschten Aufgaben (oder eine beliebige Kombination hiervon). Damit Ihr Service eine neue Bereitstellung startet, die alle Aufgaben mit der neuen Konfiguration beendet und neu startet, wählen Sie Force new deployment (Neue Bereitstellung erzwingen) aus. Wählen Sie next step (Nächster Schritt), wenn Sie die Änderung der Servicekonfiguration abgeschlossen haben.

    Anmerkung

    Ein Service, der einen Auto-Scaling-Gruppenkapazitätsanbieter verwendet, kann nicht aktualisiert werden, um einen Fargate Kapazitätsanbieter zu verwenden und umgekehrt.

    Ein Service, der eine Linux-Plattformversion verwendet, kann nicht aktualisiert werden, um eine Windows-Plattformversion zu verwenden und umgekehrt.

  8. Wenn Ihr Service den Blau/Grün-Bereitstellungstyp verwendet, sind auf der Seite Configure deployments (Bereitstellungen konfigurieren) die Komponenten Ihrer Service-Bereitstellung voreingestellt. Bestätigen Sie die folgenden Einstellungen.

    1. Wählen Sie unter Application name (Anwendungsname) die CodeDeploy-Anwendung, zu der Ihr Service gehört.

    2. Wählen Sie unter Deployment group name (Bereitstellungs-Gruppenname) die CodeDeploy-Bereitstellungsgruppe, zu der Ihr Service gehört.

    3. Wählen Sie die Lebenszyklus-Hooks der Bereitstellung und die zugehörigen Lambda-Funktionen aus, die im Rahmen der neuen Revision der Service-Bereitstellung ausgeführt werden sollen. Die verfügbaren Lebenszyklus-Hooks sind:

      • BeforeInstall: Verwenden Sie diesen Lebenszyklus-Hook der Bereitstellung, um eine Lambda-Funktion aufzurufen, bevor der Ersatz-Aufgabensatz erstellt wird. Das Ergebnis der Lambda-Funktion bei diesem Lebenszyklusereignis löst keinen Rücksetzvorgang aus.

      • AfterInstall: Verwenden Sie diesen Lebenszyklus-Hook der Bereitstellung, um eine Lambda-Funktion aufzurufen, nachdem der Ersatz-Aufgabensatz erstellt wurde. Das Ergebnis der Lambda-Funktion bei diesem Lebenszyklusereignis kann einen Rücksetzvorgang auslösen.

      • BeforeAllowTraffic: Verwenden Sie diesen Lebenszyklus-Hook der Bereitstellung, um eine Lambda-Funktion aufzurufen, bevor der Produktionsdatenverkehr an den Ersatz-Aufgabensatz umgeleitet wird. Das Ergebnis der Lambda-Funktion bei diesem Lebenszyklusereignis kann einen Rücksetzvorgang auslösen.

      • AfterAllowTraffic: Verwenden Sie diesen Lebenszyklus-Hook der Bereitstellung, um eine Lambda-Funktion aufzurufen, nachdem der Produktionsdatenverkehr an den Ersatz-Aufgabensatz umgeleitet wird. Das Ergebnis der Lambda-Funktion bei diesem Lebenszyklusereignis kann einen Rücksetzvorgang auslösen.

      Weitere Informationen über Lebenszyklus-Hooks finden Sie unter AppSpec, Abschnitt 'hooks' im AWS CodeDeploy-Benutzerhandbuch.

  9. Klicken Sie auf Next step.

  10. Auf der Seite Configure network werden Ihre Netzwerk-Informationen vorausgefüllt. Wenn Ihr Service den Blau/Grün-Bereitstellungstyp verwendet, wählen Sie im Abschnitt Load balancing (Lastausgleich) die Listener aus, die mit den Zielgruppen verknüpft werden sollen. Ändern Sie die Übergangsfrist der Zustandsprüfung (falls gewünscht), und wählen Sie Next step.

  11. (Optional) Sie können mit Service Auto Scaling veranlassen, dass Ihr Service als Reaktion auf CloudWatch-Alarme automatisch hoch- und herunterskaliert wird.

    1. Wählen Sie unter Optionale Konfigurationen die Option Service Auto Scaling konfigurieren aus.

    2. Fahren Sie mit Schritt 5: Konfigurieren des Services für die Verwendung von Service Auto Scaling fort.

    3. Führen Sie die Schritte in diesem Abschnitt aus und kehren Sie dann hierher zurück.

  12. Wählen Sie Update-Service aus, um den Vorgang abzuschließen und Ihren Service zu aktualisieren.