Controller und Strategien für die Bereitstellung von Amazon-ECS-Services - 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.

Controller und Strategien für die Bereitstellung von Amazon-ECS-Services

Bevor Sie Ihren Service bereitstellen, sollten Sie die Optionen für die Bereitstellung und die Features festlegen, die der Service verwendet.

Einplanungsstrategie

Es gibt zwei Strategien für Service-Scheduler:

  • REPLICA: Die Replica-Einplanungsstrategie platziert und die gewünschte Anzahl von Aufgaben in Ihrem Cluster und behält sie bei. Standardmäßig verteilt der Service-Scheduler Aufgaben über Availability Zones. Mit Aufgabenplatzierungsstrategien und -bedingungen können Sie festlegen, wie Aufgaben platziert und beendet werden. Weitere Informationen finden Sie unter Planungsstrategie für Replikate.

  • DAEMON: Die Daemon-Einplanungsstrategie stellt genau eine Aufgabe auf jeder aktiven Container-Instance bereit, die alle von Ihnen in Ihrem Cluster angegebenen Platzierungsbedingungen für die Aufgaben erfüllt. Bei Verwendung dieser Strategie ist es nicht erforderlich, eine gewünschte Anzahl von Aufgaben oder eine Aufgabenplatzierungsstrategie anzugeben oder Auto-Scaling-Richtlinien zu verwenden. Weitere Informationen finden Sie unter Planungsstrategie für Daemon.

    Anmerkung

    Fargate-Aufgaben unterstützen die DAEMON-Einplanungsstrategie nicht.

Planungsstrategie für Replikate

Die Planungsstrategie replica platziert und bewahrt die gewünschte Anzahl von Aufgaben in Ihrem Cluster.

Für einen Service, der Aufgaben auf Fargate ausführt, verwendet der Service-Scheduler, wenn er neue Aufgaben startet oder laufende Aufgaben stoppt, den bestmöglichen Ansatz, um ein Gleichgewicht zwischen den Availability Zones herzustellen. Sie müssen keine Aufgabenplatzierungsstrategien oder Beschränkungen angeben.

Wenn Sie einen Service erstellen, der Aufgaben auf EC2 Instances ausführt, können Sie optional Strategien und Einschränkungen für die Aufgabenplatzierung angeben, um Entscheidungen zur Aufgabenplatzierung individuell zu treffen. Wenn keine Strategien oder Einschränkungen für die Aufgabenplatzierung angegeben werden, verteilt der Service Scheduler die Aufgaben standardmäßig über Availability Zones. Der Scheduler verwendet die folgende Logik:

  • Bestimmt, welche der Container-Instances in Ihrem Cluster die Aufgabendefinition Ihres Services unterstützen können (z. B. erforderliche CPU, Arbeitsspeicher, Ports und Container-Instance-Attribute).

  • Bestimmt, welche Container-Instances alle Platzierungseinschränkungen erfüllen, die für den Service definiert sind.

  • Wenn Sie über einen Replikatdienst verfügen, der von einem Daemon-Dienst abhängt (z. B. ein Daemon-Log-Router-Task, der ausgeführt werden muss, bevor Aufgaben die Protokollierung verwenden können), erstellen Sie eine Beschränkung für die Aufgabenplatzierung, die sicherstellt, dass die Aufgaben des Daemon-Dienstes vor den Aufgaben des Replikatdienstes auf der EC2 Instance platziert werden. Weitere Informationen finden Sie unter Beispiel für Amazon-ECS-Aufgabenplatzierungsbeschränkungen.

  • Wenn es eine definierte Platzierungsstrategie gibt, verwenden Sie diese Strategie, um eine Instance aus den verbleibenden Kandidaten auszuwählen.

  • Wenn es keine definierte Platzierungsstrategie gibt, verwenden Sie die folgende Logik, um Tasks auf die Availability Zones in Ihrem Cluster zu verteilen:

    • Sortiert die gültigen Container-Instances. Gibt den Instances Vorrang, die in ihrer jeweiligen Availability Zone die geringste Anzahl von laufenden Aufgaben für diesen Service haben. Wenn beispielsweise Zone A über eine ausgeführte Serviceaufgabe verfügt und die Zonen B und C jeweils über keine, werden gültige Container-Instances in Zone B oder C als optimal für eine Platzierung erachtet.

    • Platziert die neue Serviceaufgabe auf einer gültigen Container-Instance in einer optimalen Availability Zone, basierend auf den vorherigen Schritten. Begünstigt Container-Instances mit der geringsten Anzahl von ausgeführten Aufgaben für diesen Service.

Wir empfehlen, dass Sie bei der Verwendung der REPLICA-Strategie das Feature zum Neuausgleich von Services verwenden, da dadurch eine hohe Verfügbarkeit Ihres Service gewährleistet wird.

Planungsstrategie für Daemon

Die Daemon-Planungsstrategie stellt genau eine Aufgabe auf jeder aktiven Container-Instance bereit, die alle Platzierungseinschränkungen für die Aufgaben in Ihrem Cluster erfüllt. Der Service Scheduler wertet auch die Aufgabenplatzierungsbeschränkungen für laufende Aufgaben aus und stoppt Aufgaben, die die Platzierungsbeschränkungen nicht erfüllen. Wenn Sie diese Strategie verwenden, müssen Sie keine gewünschte Anzahl von Aufgaben oder eine Aufgabenplatzierungsstrategie angeben oder Service-Auto-Scaling-Richtlinien verwenden.

Amazon ECS reserviert Container-Instance-Computing-Ressourcen, einschließlich CPU, Arbeitsspeicher und Netzwerkschnittstellen für die Daemon-Aufgaben. Wenn Sie einen Daemon-Service in einem Cluster mit anderen Replikat-Services starten, priorisiert Amazon ECS die Daemon-Aufgabe. Das bedeutet, dass die Daemon-Aufgabe die erste Aufgabe ist, die auf den Instances gestartet wird, und die letzte Aufgabe, die angehalten wird, nachdem alle Replikataufgaben angehalten sind. Diese Strategie stellt sicher, dass die Ressourcen nicht von anhängigen Replikationsaufgaben verwendet werden und für die Daemon-Aufgaben verfügbar sind.

Der Daemon-Service-Scheduler platziert keine Aufgaben auf Instances mit dem Status DRAINING. Wenn eine Container-Instance in einen DRAINING-Status übergeht, werden die darauf befindlichen Daemon-Aufgaben gestoppt. Der Service Scheduler überwacht auch, ob Ihrem Cluster neue Container-Instances hinzugefügt werden, und fügt diesen die Daemon-Aufgaben hinzu.

Wenn Sie eine Bereitstellungskonfiguration angeben, muss der Wert für den maximumPercent-Parameter 100 (als Prozentsatz angegeben) sein. Dies ist der Standardwert, der verwendet wird, wenn er nicht festgelegt ist. Der Standardwert für den minimumHealthyPercent-Parameter ist 0 (als Prozentsatz angegeben).

Sie müssen den Service neu starten, wenn Sie die Platzierungseinschränkungen für den Daemon-Service ändern. Amazon ECS aktualisiert dynamisch die Ressourcen, die auf qualifizierten Instances für die Daemon-Aufgabe reserviert sind. Bei vorhandenen Instances versucht der Scheduler, die Aufgabe auf der Instance zu platzieren.

Eine neue Bereitstellung beginnt, wenn die Aufgabengröße oder die Reservierung von Containerressourcen in der Aufgabendefinition geändert wird. Eine neue Bereitstellung wird auch gestartet, wenn ein Service aktualisiert oder eine andere Revision der Aufgabendefinition festgelegt wird. Amazon ECS nimmt die aktualisierten CPU- und Speicherreservierungen für den Daemon auf und sperrt diese Kapazität für die Daemon-Aufgabe.

Wenn für einen der oben genannten Fälle nicht genügend Ressourcen vorhanden sind, geschieht Folgendes:

  • Die Aufgabenplatzierung schlägt fehl.

  • Ein Ereignis wird generiert. CloudWatch

  • Amazon ECS versucht weiterhin, die Aufgabe für die Instance zu planen, indem er darauf wartet, dass Ressourcen verfügbar sind.

  • Amazon ECS gibt alle reservierten Instances frei, die die Platzierungseinschränkungskriterien nicht mehr erfüllen, und stoppt die entsprechenden Daemon-Aufgaben.

Die Daemon-Scheduling-Strategie kann in folgenden Fällen verwendet werden:

  • Ausführen von Anwendungscontainern

  • Ausführen von Support-Containern für Protokollierungs-, Überwachungs- und Tracing-Aufgaben

Aufgaben, die Fargate oder die Bereitstellungs-Controller-Typen CODE_DEPLOY oder EXTERNAL verwenden, unterstützen die Daemon-Planungsstrategie nicht.

Wenn der Service-Scheduler Aufgaben stoppt, versucht er, eine Ausgewogenheit in den Availability Zones in Ihrem Cluster herzustellen. Der Scheduler verwendet die folgende Logik:

  • Wenn eine Platzierungsstrategie definiert ist, wählen Sie mit dieser Strategie die zu beendenden Aufgaben aus. Wenn beispielsweise für einen Service eine Strategie für die Verteilung der Availability Zone definiert wurde, wird eine Aufgabe ausgewählt, die die verbleibenden Aufgaben mit der besten Verteilung belässt.

  • Wenn keine Platzierungsstrategie definiert ist, verwenden Sie die folgende Logik, um das Gleichgewicht zwischen den Availability Zones in Ihrem Cluster aufrechtzuerhalten:

    • Sortiert die gültigen Container-Instances. Geben Sie den Instances den Vorrang, die in ihrer jeweiligen Availability Zone die größte Anzahl an laufenden Aufgaben für diesen Service haben. Wenn beispielsweise in Zone A eine Serviceaufgabe läuft und in den Zonen B und C jeweils zwei Serviceaufgaben laufen, werden Container Instances in Zone B oder C als optimal für die Terminierung angesehen.

    • Stoppen Sie die Aufgabe auf einer Container-Instance in einer optimalen Availability Zone, basierend auf den vorherigen Schritten. Bevorzugung von Container-Instances mit der größten Anzahl von ausgeführten Aufgaben für diesen Service.

Bereitstellungs-Controller

Der Bereitstellungs-Controller ist der Mechanismus, der bestimmt, wie Aufgaben für Ihren Service bereitgestellt werden. Die gültigen Optionen sind:

  • ECS

    Wenn Sie einen Service erstellen, der den ECS-Bereitstellungs-Controller verwendet, können Sie zwischen den folgenden Bereitstellungsstrategien wählen:

    • ROLLING: Wenn Sie einen Service erstellen, der die Bereitstellungsstrategie Fotlaufende Aktualisierung (ROLLING) verwendet, ersetzt der Amazon ECS Service Scheduler die derzeit ausgeführten Aufgaben durch neue Aufgaben. Die Anzahl der Aufgaben, die Amazon ECS während einer fortlaufenden Aktualisierung für den Service hinzufügt oder entfernt, wird durch die Service-Bereitstellungskonfiguration gesteuert.

      Rollende Update-Bereitstellungen eignen sich am besten für die folgenden Szenarien:

      • Schrittweise Serviceaktualisierungen: Sie müssen Ihren Service schrittweise aktualisieren, ohne den gesamten Service auf einmal offline zu nehmen.

      • Begrenzte Ressourcenanforderungen: Sie möchten die zusätzlichen Ressourcenkosten vermeiden, die entstehen, wenn zwei vollständige Umgebungen gleichzeitig ausgeführt werden (wie dies bei Blau/Grün-Bereitstellungen erforderlich ist).

      • Akzeptable Bereitstellungszeit: Ihre Anwendung kann einen längeren Bereitstellungsprozess tolerieren, da die fortlaufende Aktualisierung die Aufgaben nacheinander ersetzt.

      • Kein sofortiges Rollback erforderlich: Ihr Service kann einen Rollback-Prozess tolerieren, der Minuten statt Sekunden dauert.

      • Einfacher Bereitstellungsprozess: Sie bevorzugen ein unkompliziertes Bereitstellungskonzept ohne die Komplexität der Verwaltung mehrerer Umgebungen, Zielgruppen und Listener.

      • Keine Load Balancer-Anforderung: Ihr Service verwendet oder benötigt keinen Load Balancer, Application Load Balancer, Network Load Balancer oder Service Connect (die für Bereitstellungen erforderlich sind). blue/green

      • Statussbehaftete Anwendungen: Ihre Anwendung behält ihren Status bei, was es schwierig macht, zwei parallele Umgebungen auszuführen.

      • Kostensensibilität: Sie möchten die Bereitstellungskosten minimieren, indem Sie während der Bereitstellung keine doppelten Umgebungen ausführen.

      Fortlaufende Aktualisierung ist die standardmäßige Bereitstellungsstrategie für Services und sorgen für ein ausgewogenes Verhältnis zwischen Bereitstellungssicherheit und Ressourceneffizienz für viele gängige Anwendungsszenarien.

    • BLUE_GREEN: Eine Blau/Grün-Bereitstellungsstrategie (BLUE_GREEN) ist eine Release-Methode, die Ausfallzeiten und Risiken reduziert, indem zwei identische Produktionsumgebungen, die als „Blau“ und „Grün“ bezeichnet werden, ausgeführt werden. Mit Amazon blue/green ECS-Bereitstellungen können Sie neue Service-Revisionen validieren, bevor Sie den Produktionsdatenverkehr an sie weiterleiten. Dieser Ansatz bietet eine sicherere Methode zur Bereitstellung von Änderungen und bietet die Möglichkeit, bei Bedarf schnell ein Rollback durchzuführen.

      Amazon blue/green ECS-Bereitstellungen eignen sich am besten für die folgenden Szenarien:

      • Servicevalidierung: Sie können neue Service-Revisionen validieren, bevor Sie den Produktionsdatenverkehr an sie weiterleiten

      • Null Ausfallzeit: Wenn Ihr Service Bereitstellungen ohne Ausfallzeiten erfordert

      • Sofortiger Rollback: Wenn Sie die Möglichkeit benötigen, bei erkannten Problemen schnell ein Rollback durchzuführen

      • Load-Balancer-Anforderung: Wenn Ihr Service Application Load Balancer, Network Load Balancer oder Service Connect verwendet

    • LINEAR: Eine lineare Bereitstellungsstrategie (LINEAR) verlagert den Datenverkehr über einen bestimmten Zeitraum schrittweise in gleichen prozentualen Schritten von der aktuellen Produktionsumgebung in eine neue Umgebung. Mit linearen Bereitstellungen von Amazon ECS können Sie das Tempo der Verkehrsverlagerung kontrollieren und neue Service-Revisionen bei steigendem Produktionsdatenverkehr validieren.

      Lineare Bereitstellungen von Amazon ECS eignen sich am besten für die folgenden Szenarien:

      • Schrittweise Validierung: Wenn Sie Ihre neue Service-Version bei steigendem Traffic schrittweise validieren möchten

      • Leistungsüberwachung: Wenn Sie Zeit benötigen, um Messwerte und Leistung während der Bereitstellung zu überwachen

      • Risikominimierung: Wenn Sie das Risiko minimieren möchten, indem Sie die neue Version schrittweise dem Produktionsdatenverkehr aussetzen

      • Load-Balancer-Anforderung: Wenn Ihr Service Application Load Balancer, Network Load Balancer oder Service Connect verwendet

    • CANARY: Bei einer Canary-Implementierungsstrategie (CANARY) wird zunächst ein kleiner Prozentsatz des Datenverkehrs auf die neue Service-Version und dann nach einem bestimmten Zeitraum der restliche Traffic auf einmal verlagert. Auf diese Weise können Sie die neue Version vor der vollständigen Bereitstellung mit einer Untergruppe von Benutzern testen.

      Canary-Bereitstellungen von Amazon ECS eignen sich am besten für die folgenden Szenarien:

      • Funktionstests: Wenn Sie neue Funktionen vor der vollständigen Einführung mit einer kleinen Gruppe von Benutzern testen möchten

      • Produktionsvalidierung: Wenn Sie Leistung und Funktionalität anhand von echtem Produktionsdatenverkehr validieren müssen

      • Steuerung des Explosionsradius: Wenn Sie den Explosionsradius minimieren möchten, falls in der neuen Version Probleme festgestellt werden

      • Load-Balancer-Anforderung: Wenn Ihr Service Application Load Balancer, Network Load Balancer oder Service Connect verwendet

  • Extern

    Verwenden Sie den Bereitstellungs-Controller eines Drittanbieters.

  • Einsatz in Blau/Grün (unterstützt von AWS CodeDeploy)

    CodeDeploy installiert eine aktualisierte Version der Anwendung als neuen Ersatz-Tasksatz und leitet den Produktionsdatenverkehr vom ursprünglichen Anwendungs-Taskset zum Ersatz-Taskset um. Der ursprüngliche Tasksatz wird nach einer erfolgreichen Bereitstellung beendet. Verwenden Sie diesen Bereitstellungs-Controller, um eine neue Bereitstellung eines Service zu verifizieren, bevor Sie den Produktionsdatenverkehr an ihn senden.

Terminologie der Bereitstellung

Die folgenden Begriffe werden in der gesamten Amazon ECS-Bereitstellungsdokumentation verwendet:

Bereitstellung in Blaugrün

Eine Bereitstellungsstrategie, bei der neben der vorhandenen Umgebung (blau) eine neue Umgebung (grün) erstellt wird und der Datenverkehr nach der Validierung von blau auf grün umgestellt wird.

Bereitstellung auf Canary

Eine Bereitstellungsstrategie, bei der ein kleiner Teil des Datenverkehrs an eine neue Version weitergeleitet wird, während der Großteil zur Validierung auf der stabilen Version bleibt.

Lineare Bereitstellung

Eine Bereitstellungsstrategie, bei der der Datenverkehr im Laufe der Zeit schrittweise von der alten Version auf die neue Version verlagert wird.

Fortlaufende Bereitstellung

Eine Bereitstellungsstrategie, bei der Instanzen der alten Version nacheinander durch Instanzen der neuen Version ersetzt werden.

Aufgabensatz

Eine Sammlung von Aufgaben, die während einer Bereitstellung dieselbe Aufgabendefinition innerhalb eines Dienstes ausführen.

Zielgruppe

Eine logische Gruppierung von Zielen, die bei Bereitstellungen Datenverkehr von einem Load Balancer empfangen.

Bereitstellungscontroller

Die Methode, die verwendet wird, um neue Versionen Ihres Service, wie Amazon ECS CodeDeploy, oder externe Controller bereitzustellen.

Rollback

Der Vorgang, bei dem Sie zu einer früheren Version Ihrer Anwendung zurückkehren, wenn bei der Bereitstellung Probleme festgestellt werden.