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.
Schützen Sie Ihre ECS Amazon-Aufgaben davor, durch Scale-In-Ereignisse beendet zu werden
Sie können Amazon ECS Task Scale-In Protection verwenden, um zu verhindern, dass Ihre Aufgaben durch Scale-In-Ereignisse von Service Auto Scaling oder Bereitstellungen beendet werden.
Bestimmte Anwendungen erfordern einen Mechanismus zum Schutz unternehmenskritischer Aufgaben vor der Beendigung durch Abskalierungsereignisse in Zeiten geringer Auslastung oder während Service-Bereitstellungen. Beispielsweise:
-
Sie verfügen über eine asynchrone Anwendung mit Warteschlangenverarbeitung, z. B. einen Video-Transkodierungsauftrag, bei dem einige Aufgaben stundenlang ausgeführt werden müssen, selbst wenn die kumulierte Service-Auslastung gering ist.
-
Sie haben eine Spieleanwendung, die Spieleserver als ECS Amazon-Aufgaben ausführt, die auch dann weiterlaufen müssen, wenn sich alle Benutzer abgemeldet haben, um die Startlatenz bei einem Serverneustart zu reduzieren.
-
Wenn Sie eine neue Codeversion bereitstellen, müssen Aufgaben weiterhin ausgeführt werden, da eine erneute Verarbeitung kostenintesiv wäre.
Um zu verhindern, dass Aufgaben, die zu Ihrem Service gehören, bei einem Abskalierungs-Ereignis beendet werden, setzen Sie das protectionEnabled
-Attribut auf true
. Standardmäßig sind Aufgaben für 2 Stunden geschützt. Sie können den Schutzzeitraum mithilfe des expiresInMinutes
-Attributs anpassen. Sie können Ihre Aufgaben für mindestens 1 Minute und bis zu maximal 2 880 Minuten (48 Stunden) schützen.
Nachdem eine Aufgabe ihre erforderliche Arbeit beendet hat, können Sie das protectionEnabled
-Attribut auf false
setzen, sodass die Aufgabe durch nachfolgende Abskalierungsereignisse beendet werden kann.
Mechanismus des Abskalierungsschutzes für Aufgaben
Sie können den Task-Scale-In-Schutz entweder über den ECS Amazon-Container-Agent-Endpunkt oder über Amazon einrichten und erhalten. ECS API
-
Endpunkt ECS des Amazon-Container-Agenten
Wir empfehlen, den ECS Amazon-Container-Agent-Endpunkt für Aufgaben zu verwenden, bei denen der Schutzbedarf selbst bestimmt werden kann. Verwenden Sie diesen Ansatz für warteschlangenbasierte oder Auftragsverarbeitungs-Workloads.
Wenn ein Container mit der Verarbeitung beginnt, z. B. indem er eine SQS Nachricht verarbeitet, können Sie das
ProtectionEnabled
Attribut über den Task-Scale-in-Schutz-Endpunktpfad$ECS_AGENT_URI/task-protection/v1/state
innerhalb des Containers festlegen. Amazon ECS wird diese Aufgabe bei Scale-In-Ereignissen nicht beenden. Nachdem Ihre Aufgabe ihre Arbeit beendet hat, können Sie dasProtectionEnabled
Attribut mit demselben Endpunkt löschen, sodass die Aufgabe bei nachfolgenden Scale-In-Ereignissen beendet werden kann.Weitere Informationen zum ECS Amazon-Container-Agent-Endpunkt finden Sie unterECSSkalierbarer Schutzendpunkt von Amazon Task.
-
Amazon ECS API
Sie können Amazon verwenden ECSAPI, um den Task-Scale-In-Schutz einzurichten und abzurufen, wenn Ihre Anwendung über eine Komponente verfügt, die den Status aktiver Aufgaben verfolgt. Verwenden Sie
UpdateTaskProtection
, um eine oder mehrere Aufgaben als geschützt zu markieren. DientGetTaskProtection
zum Abrufen des Schutzstatus.Ein Beispiel für diesen Ansatz wäre, wenn Ihre Anwendung Spieleserversitzungen als ECS Amazon-Aufgaben hostet. Wenn sich ein Benutzer bei einer Sitzung auf dem Server (Aufgabe) anmeldet, können Sie die Aufgabe als geschützt markieren. Nachdem sich der Benutzer abgemeldet hat, können Sie entweder den Schutz speziell für diese Aufgabe aufheben oder den Schutz für ähnliche Aufgaben, die keine aktiven Sitzungen mehr haben, regelmäßig aufheben, je nachdem, ob Sie Server im Leerlauf halten möchten.
Weitere Informationen finden Sie unter UpdateTaskProtectionund GetTaskProtectionin der Amazon Elastic Container Service API Reference.
Sie können beide Ansätze kombinieren. Verwenden Sie beispielsweise den ECS Amazon-Agent-Endpunkt, um den Task-Schutz innerhalb eines Containers einzurichten, und verwenden Sie Amazon ECSAPI, um den Task-Schutz von Ihrem externen Controller-Service zu entfernen.
Überlegungen
Berücksichtigen Sie die folgenden Punkte, bevor Sie den Abskalierungsschutz für Aufgaben verwenden:
-
Wir empfehlen die Verwendung des ECS Amazon-Container-Agent-Endpunkts, da der ECS Amazon-Agent über integrierte Wiederholungsmechanismen und eine einfachere Oberfläche verfügt.
-
Sie können den Ablaufzeitraum für den Abskalierungsschutz für Aufgaben zurücksetzen, indem Sie
UpdateTaskProtection
für eine Aufgabe aufrufen, für die der Schutz bereits aktiviert ist. -
Bestimmen Sie, wie lange eine Aufgabe benötigen würde, um ihre erforderliche Arbeit abzuschließen, und legen Sie die
expiresInMinutes
-Eigenschaft entsprechend fest. Wenn Sie den Ablauf des Schutzes länger als nötig festlegen, entstehen Ihnen Kosten und Verzögerungen bei der Bereitstellung neuer Aufgaben. -
Task Scale-In Protection wird auf Amazon ECS Container Agent
1.65.0
oder höher unterstützt.Sie können Unterstützung für diese Funktion auf EC2 Amazon-Instances hinzufügen, die ältere Versionen des ECS Amazon-Container-Agenten verwenden, indem Sie den Agenten auf die neueste Version aktualisieren. Weitere Informationen finden Sie unter Den ECS Amazon-Container-Agenten aktualisieren.
-
Überlegungen zur Bereitstellung:
-
Wenn der Service eine fortlaufende Aktualisierung verwendet, werden neue Aufgaben erstellt, aber Aufgaben mit älteren Versionen werden nicht beendet, bis
protectionEnabled
gelöscht wird oder abläuft. Sie können denmaximumPercentage
-Parameter in der Bereitstellungskonfiguration auf einen Wert anpassen, der es ermöglicht, neue Aufgaben zu erstellen, wenn alte Aufgaben geschützt sind. -
Wenn eine Blau/Grün-Aktualisierung angewendet wird, wird die blaue Bereitstellung mit geschützten Aufgaben nicht entfernt, wenn Aufgaben über
protectionEnabled
verfügen. Der Datenverkehr wird auf die neu hinzukommenden Aufgaben umgeleitet, und ältere Aufgaben werden erst entfernt, wenn sie gelöscht wurden oder abgelaufenprotectionEnabled
sind. Je nach Timeout der CodeDeploy CloudFormation OR-Updates kann es bei der Bereitstellung zu einem Timeout kommen und die älteren Blue-Aufgaben sind möglicherweise noch vorhanden. -
Wenn Sie dies verwenden CloudFormation, hat der Update-Stack ein Timeout von 3 Stunden. Wenn Sie also Ihren Task-Schutz auf mehr als 3 Stunden einstellen, kann Ihre CloudFormation Implementierung zu einem Ausfall und Rollback führen.
Während der Zeit, in der Ihre alten Aufgaben geschützt sind, wird der CloudFormation Stack angezeigt
UPDATE_IN_PROGRESS
. Wenn der Abskalierungsschutz für Aufgaben entfernt wird oder innerhalb des 3-Stunden-Fensters abläuft, wird Ihre Bereitstellung erfolgreich sein und in den StatusUPDATE_COMPLETE
wechseln. Wenn die Bereitstellung länger als 3 Stunden inUPDATE_IN_PROGRESS
verharrt, schlägt sie fehl, zeigt denUPDATE_FAILED
-Status an und wird dann auf den alten Aufgabensatz zurückgesetzt. -
Amazon ECS sendet Service-Ereignisse, wenn geschützte Aufgaben verhindern, dass eine Bereitstellung (fortlaufend oder blau/grün) den stabilen Status erreicht, sodass Sie Abhilfemaßnahmen ergreifen können. Wenn Sie beim Versuch, den Schutzstatus einer Aufgabe zu aktualisieren, eine
DEPLOYMENT_BLOCKED
-Fehlermeldung erhalten, bedeutet dies, dass der Service über mehr geschützte Aufgaben verfügt als die gewünschte Anzahl von Aufgaben für den Service. Führen Sie einen der folgenden Schritte aus, um diesen Fehler zu beheben:-
Warten Sie, bis der aktuelle Aufgabenschutz abgelaufen ist. Stellen Sie dann den Aufgabenschutz ein.
-
Stellen Sie fest, welche Aufgaben angehalten werden können. Dann verwenden Sie
UpdateTaskProtection
mit der auffalse
festgelegtenprotectionEnabled
-Option für diese Aufgaben. -
Erhöhen Sie die Anzahl der gewünschten Aufgaben des Services auf mehr als die Anzahl der geschützten Aufgaben.
-
-
IAMBerechtigungen, die für den Task-Scale-In-Schutz erforderlich sind
Die Aufgabe muss über die ECS Amazon-Aufgabenrolle mit den folgenden Berechtigungen verfügen:
-
ecs:GetTaskProtection
: Ermöglicht dem ECS Amazon-Container-Agenten den AnrufGetTaskProtection
. -
ecs:UpdateTaskProtection
: Ermöglicht dem ECS Amazon-Container-Agenten den AnrufUpdateTaskProtection
.