Container-Instance-Ausgleich - Amazon Elastic Container Service

Container-Instance-Ausgleich

Anmerkung

Wenn Sie einen Amazon-ECS-Kapazitätsanbieter verwenden, müssen Sie keine Maßnahmen im Zusammenhang mit dem Ausgleich von Container-Instances ergreifen. Der Kapazitätsanbieter koordiniert den Ausgleich von Container-Instances mit der Auto-Scaling-Gruppe.

Es kann vorkommen, dass Sie eine Container-Instance aus Ihrem Cluster entfernen müssen, beispielsweise, um Systemaktualisierungen durchzuführen, den Docker-Daemon zu aktualisieren oder die Cluster-Kapazität zu reduzieren. Amazon ECS bietet die Möglichkeit, eine Container-Instance in einen DRAINING-Status zu überführen. Dies wird Container-Instance-Ausgleich genannt. Wenn eine Container-Instance auf DRAINING festgelegt wird, lässt es Amazon ECS nicht zu, dass die Platzierung neuer Aufgaben in der Container-Instance geplant wird.

Ausgleichsverhalten für Services

Alle Aufgaben, die Teil eines Dienstes sind, die sich in einem PENDING-Zustand befinden, werden sofort gestoppt. Wenn im Cluster verfügbare Kapazität für Container-Instances vorhanden ist, startet der Service-Scheduler Ersetzungsaufgaben. Wenn nicht genügend Kapazität für Container-Instances vorhanden ist, wird eine Service-Ereignismeldung gesendet, die das Problem angibt.

Aufgaben, die Teil eines Dienstes auf der Container-Instance sind, die sich in einem RUNNING-Zustand befinden werden in einen STOPPED-Zustand übertragen. Der Service Scheduler versucht, die Aufgaben gemäß den Bereitstellungskonfigurationsparametern des Service, minimumHealthyPercent und maximumPercent, zu ersetzen. Weitere Informationen finden Sie unter Servicedefinitionsparameter.

  • Beträgt der Wert für minimumHealthyPercent weniger als 100 % kann der Scheduler die Angabe desiredCount während des Ersetzens der Aufgabe vorübergehend ignorieren. Beträgt der Wert für desiredCount beispielsweise vier Aufgaben, kann der Scheduler bei einem Minimum von 50 % zwei bestehende Aufgaben stoppen, bevor er zwei neue Aufgaben startet. Bei einem Minimum von 100 % kann der Service-Scheduler keine vorhandenen Aufgaben entfernen, bis die Ersatzaufgaben als fehlerfrei angesehen werden. Wenn Aufgaben für Services, die keinen Load Balancer verwenden, den Status RUNNING aufweisen, werden Sie als fehlerfrei angesehen. Aufgaben für Services, die einen Load Balancer nutzen, gelten als fehlerfrei, wenn Sie den Status RUNNING aufweisen und die Container-Instance, auf der sie gehostet sind, vom Load Balancer als fehlerfrei gemeldet wird.

  • Der Parameter maximumPercent stellt eine Obergrenze für die Anzahl der laufenden Aufgaben während der Aufgabenersetzung dar, sodass Sie die Größe des Ersatzstapels festlegen können. Bei einem desiredCount von vier Aufgaben beispielsweise werden bei einem Maximum von 200 % vier neue Aufgaben gestartet, bevor die vier auszugleichenden Aufgaben gestoppt werden (sofern die hierfür erforderlichen Cluster-Ressourcen verfügbar sind). Bei einem Maximum von 100 % können keine Ersatzaufgaben gestartet werden, bis die Ausgleichsaufgaben gestoppt wurden.

    Wichtig

    Wenn sowohl minimumHealthyPercent als auch maximumPercent 100 % betragen, kann der Service vorhandene Aufgaben nicht entfernen und auch keine Ersatzaufgaben starten. Dies verhindert einen erfolgreichen Ausgleich von Container-Instances und verhindert neue Bereitstellungen.

Ausgleichsverhalten für eigenständige Aufgaben

Alle eigenständigen Aufgaben im PENDING- oder RUNNING-Status bleiben unberührt. Sie müssen warten, bis sie von alleine stoppen, oder müssen sie manuell stoppen. Die Container-Instance bleibt im Status DRAINING.

Eine Container-Instance hat den Ausgleich abgeschlossen, wenn alle Aufgaben, die auf der Instance ausgeführt werden, zu einem STOPPED-Zustand übergegangen sind. Die Container-Instance verbleibt in einem DRAINING-Zustand, bis sie erneut aktiviert oder gelöscht wird. Sie können den Status der Tasks auf der Container-Instance überprüfen, indem Sie die ListTasks-Operation mit dem containerInstance-Parameter verwenden, um so eine Liste von Aufgaben für die Instance, gefolgt von einem DescribeTasks-Vorgang mit dem Amazon-Ressourcennamen (ARN) oder der ID jeder Aufgabe, um den Aufgabenstatus zu überprüfen, zu erhalten.

Wenn Sie bereit sind, dass die Container-Instance erneut mit dem Hosten von Tasks beginnen kann, ändern Sie den Status der Container-Instance von DRAINING auf ACTIVE. Der Amazon ECS-Service Scheduler berücksichtigt dann die Container-Instance für die Aufgabenplatzierung erneut.

Ausgleich von Container-Instances

New AWS Management Console

Neu - AWS Management Console

Die folgenden Schritte können verwendet werden, um eine Container-Instance mit der neuen AWS Management Console zum Ausgleich einzustellen.

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

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

  3. Wählen Sie auf der Seite Clusters einen Cluster aus, der Ihre Instances hostet.

  4. Wählen Sie auf der Seite Cluster : Name die Registerkarte Infrastructure (Infrastruktur). Aktivieren Sie dann unter Container instances (Container-Instances) das Kontrollkästchen für jede Container-Instance, die Sie ausgleichen möchten.

  5. Wählen Sie Drain (Ausgleichen).

Classic AWS Management Console

Klassische AWS Management Console

Die folgenden Schritte können verwendet werden, um eine Container-Instance mit der klassischen AWS Management Console auszugleichen.

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

  2. Wählen Sie im Navigationsbereich Clusters und dann den Cluster aus.

  3. Wählen Sie Registerkarte ECS Instances und wählen Sie das Kontrollkästchen für jede Container-Instance, die Sie ausgleichen möchten.

  4. Wählen Sie Actions und dann die Option Drain Instances aus.

  5. Nachdem die Instances verarbeitet wurden, wählen Sie Fertig aus.

  6. Wenn Sie die Container-Instances erneut aktivieren möchten, wiederholen Sie die gleichen Schritte, wählen jedoch Aktivieren von Instances aus dem Aktionen-Menü.

AWS CLI

Sie können die API-Aktion UpdateContainerInstancesState oder den Befehl update-container-instances-state verwenden, um den Status einer Container-Instance in DRAINING zu ändern.