Aktualisierung eines Service - Amazon Elastic Container Service

Aktualisierung eines Service

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. 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 Containerabbild 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 ein Service beispielsweise eine gewünschte Anzahl von vier Aufgaben und einen mindestens fehlerfreien Prozentsatz von 50 % hat, stoppt der Scheduler eventuell zwei bestehende Aufgaben, 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%.

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% hat, kann der Scheduler 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%.

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.

Wenn Ihr Service einen Load Balancer verwendet, kann die Konfiguration des Load Balancer, die für Ihren Service bei seiner Erstellung definiert wurde, nicht geändert werden. 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 Load Balancer-Namen, 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.