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.
Eine Amazon blue/green ECS-Bereitstellung erstellen
Mithilfe von Amazon blue/green ECS-Bereitstellungen können Sie Serviceänderungen vornehmen und testen, bevor Sie sie in einer Produktionsumgebung implementieren.
Voraussetzungen
Führen Sie die folgenden Vorgänge aus, bevor Sie eine blue/green Bereitstellung starten.
-
Konfigurieren Sie die entsprechenden Berechtigungen.
-
Informationen zu Elastic Load Balancing Balancing-Berechtigungen finden Sie unterIAM-Rolle der Amazon ECS-Infrastruktur für Load Balancer.
-
Hinweise zu Lambda-Berechtigungen finden Sie unter Erforderliche Berechtigungen für Lambda-Funktionen in Amazon ECS-Bereitstellungen blue/green
-
-
Amazon blue/green ECS-Bereitstellungen erfordern, dass Ihr Service eine der folgenden Funktionen verwendet: Konfigurieren Sie die entsprechenden Ressourcen.
-
Application Load Balancer — Weitere Informationen finden Sie unterApplication Load Balancer Balancer-Ressourcen für Bereitstellungen blue/green .
-
Network Load Balancer — Weitere Informationen finden Sie unterNetwork Load Balancer Balancer-Ressourcen für Amazon ECS Blue/Green-Bereitstellungen.
-
Service Connect — Weitere Informationen finden Sie unterService Connect-Ressourcen für blaue/grüne Bereitstellungen von Amazon ECS.
-
-
Erstellen Sie eine Regel, um den Verkehr an Ihre Green Service-Version weiterzuleiten. Weitere Informationen finden Sie unter Listener-Regeln im Network Load Balancer Balancer-Benutzerhandbuch.
-
Erstellen Sie eine Zielgruppe für Ihre Green Service-Version. Wenn Sie den
awsvpc
Netzwerkmodus für Ihre Aufgaben verwenden, muss der Zieltyp seinip
. Informationen zu Zielgruppen finden Sie unter Zielgruppen im Network Load Balancer User Guide. -
Entscheiden Sie, ob Sie Lambda-Funktionen für die Lebenszyklusereignisse ausführen möchten.
-
Vor der Skalierung
-
Nach dem Hochskalieren
-
Testen Sie die Verkehrsverlagerung
-
Nach der Testverkehrsverlagerung
-
Verlagerung des Produktionsverkehrs
-
Nach der Verkehrsverlagerung in der Produktion
Erstellen Sie Lambda-Funktionen für jedes Lebenszyklusereignis. Weitere Informationen finden Sie unter Erstellen einer Lambda-Funktion mit der Konsole im AWS Lambda Entwicklerhandbuch.
-
Verfahren
Sie können die Konsole oder die verwenden AWS CLI , um einen Amazon blue/green ECS-Service zu erstellen.
- Console
-
Öffnen Sie die Konsole auf https://console.aws.amazon.com/ecs/Version
2. -
Bestimmen Sie die Ressource, von der aus Sie den Service starten.
So starten Sie einen Service von Schritte Cluster
-
Wählen Sie auf der Seite Cluster den Cluster aus, den Sie im Service erstellen möchten.
Die Seite mit den Cluster-Details wird angezeigt.
-
Wählen Sie auf der Registerkarte Services die Option Create (Erstellen).
Aufgabendefinition -
Wählen Sie auf der Seite mit den Aufgabendefinitionen die Aufgabendefinition aus.
-
Wählen Sie im Menü Bereitstellen die Option Dienst erstellen.
Die Seite Service erstellen wird angezeigt.
-
-
Gehen Sie unter Servicedetails wie folgt vor:
-
Wählen Sie unter Aufgabendefinitionsfamilie die zu verwendende Aufgabendefinition aus. Geben Sie dann unter Aufgabendefinitionsrevision die zu verwendende Revision ein.
-
Wählen Sie für Service name (Servicename) einen Namen für Ihren Service aus.
-
-
Um den Dienst in einem vorhandenen Cluster auszuführen, wählen Sie unter Existierender Cluster den Cluster aus. Um den Service in einem neuen Cluster auszuführen, wählen Sie Create cluster
-
Wählen Sie aus, wie Ihre Aufgaben auf Ihre Cluster-Infrastruktur verteilt werden. Wählen Sie unter Compute-Konfiguration Ihre Option aus.
Option „Berechnen“ Schritte Kapazitätsanbieterstrategie
-
Wählen Sie unter Rechenoptionen die Option Kapazitätsanbieterstrategie aus.
-
Wählen Sie eine Strategie aus:
-
Um die standardmäßige Kapazitätsanbieter-Strategie des Clusters zu verwenden, wählen Sie Use cluster default (Cluster-Standard verwenden).
-
Wenn Ihr Cluster nicht über eine Standard-Kapazitätsanbieter-Strategie verfügt oder Sie eine benutzerdefinierte Strategie verwenden möchten, wählen Sie Benutzerdefiniert verwenden, Kapazitätsanbieter-Strategie hinzufügen und definieren dann Ihre benutzerdefinierte Kapazitätsanbieter-Strategie, indem Sie eine Basis, einen Kapazitätsanbieter und ein Gewicht angeben.
-
Anmerkung
Damit Kapazitätsanbieter in einer Strategie verwendet werden kann, muss er dem Cluster zugeordnet sein.
Starttyp -
Wählen Sie im Bereich Compute options (Datenverarbeitungs-Optionen) die Option Launch type (Starttyp) aus.
-
Wählen Sie unter Launch type (Starttyp) einen Starttyp aus.
-
(Optional) Wenn der Fargate Starttyp angegeben ist, geben Sie für Plattformversion die zu verwendende Plattformversion an. Ist keine Plattformversion angegeben, wird die Plattformversion
LATEST
verwendet.
-
-
Gehen Sie unter Bereitstellungskonfiguration wie folgt vor:
-
Wählen Sie als Diensttyp die Option Replica aus.
-
Geben Sie für Desired tasks (Gewünschte Aufgaben) die Anzahl der Aufgaben an, die im Service gestartet und aufrecht erhalten werden sollen.
-
Damit Amazon ECS die Verteilung der Aufgaben auf die Availability Zones überwacht und sie bei einem Ungleichgewicht neu verteilt, wählen Sie unter Availability Zone Service Rebalancing die Option Availability Zone Service Rebalancing aus.
-
Geben Sie für Health Check Grace Period den Zeitraum (in Sekunden) ein, für den der Service Scheduler fehlerhafte Elastic Load Balancing-, VPC Lattice- und Container-Integritätsprüfungen ignoriert, nachdem eine Aufgabe zum ersten Mal gestartet wurde. Wenn Sie keinen Wert für die Nachfrist für die Integritätsprüfung angeben, wird der Standardwert 0 verwendet.
-
-
-
Geben Sie unter Backzeit die Anzahl der Minuten ein, für die sowohl die blaue als auch die grüne Version gleichzeitig ausgeführt werden, bevor die blaue Version beendet wird. Dadurch bleibt Zeit für die Überprüfung und das Testen.
-
(Optional) Führen Sie Lambda-Funktionen aus, die in bestimmten Phasen der Bereitstellung ausgeführt werden sollen. Wählen Sie unter Deployment-Lifecycle-Hooks die Phasen aus, in denen die Lifecycle-Hooks ausgeführt werden sollen.
Um einen Lifecycle-Hook hinzuzufügen:
-
Wählen Sie Hinzufügen aus.
-
Geben Sie für die Lambda-Funktion den Funktionsnamen oder ARN ein.
-
Wählen Sie unter Rolle die IAM-Rolle aus, die berechtigt ist, die Lambda-Funktion aufzurufen.
-
Wählen Sie für Lifecycle-Phasen die Phasen aus, in denen die Lambda-Funktion ausgeführt werden soll.
-
-
-
Um zu konfigurieren, wie Amazon ECS Bereitstellungsfehler erkennt und behandelt, erweitern Sie Deployment failure detection (Erkennung von Bereitstellungsfehlern) und wählen Sie dann Ihre Optionen.
-
Um eine Bereitstellung anzuhalten, wenn die Aufgaben nicht gestartet werden können, wählen Sie Use the Amazon ECS deployment circuit breaker (Verwenden des Amazon-ECS-Bereitstellungsschutzschalters).
Wählen Sie Rollback bei Fehlern aus, damit die Software die Bereitstellung automatisch auf den Status der letzten abgeschlossenen Bereitstellung zurücksetzt, wenn der Bereitstellungs-Schutzschalter die Bereitstellung in den Status „Fehlgeschlagen“ versetzt.
-
Um eine Bereitstellung auf der Grundlage von Anwendungsmetriken zu beenden, wählen Sie CloudWatch Alarm (en) verwenden aus. Wählen Sie dann unter CloudWatch Alarmname die Alarme aus. Um einen neuen Alarm zu erstellen, gehen Sie zur CloudWatch Konsole.
Damit die Software die Bereitstellung automatisch auf den Status der letzten abgeschlossenen Bereitstellung zurücksetzt, wenn ein CloudWatch Alarm die Bereitstellung in einen fehlgeschlagenen Zustand versetzt, wählen Sie Rollback bei Fehlern.
-
-
(Optional) Um Ihren Dienst mithilfe von Service Connect zu verbinden, erweitern Sie Service Connect und geben Sie dann Folgendes an:
-
Wählen Sie Service Connect einschalten aus.
-
Geben Sie unter Service Connect configuration (Service-Connect-Konfiguration) den Client-Modus an.
-
Wenn Ihr Dienst eine Netzwerk-Client-Anwendung ausführt, die nur eine Verbindung zu anderen Diensten im Namespace herstellen muss, wählen Sie Nur Client-Seite.
-
Wenn Ihr Service eine Netzwerk- oder Webservice-Anwendung ausführt und Endpunkte für diesen Service bereitstellen muss und eine Verbindung zu anderen Services im Namespace herstellt, wählen Sie Client and server (Client und Server) aus.
-
-
Um einen Namespace zu verwenden, der nicht der Standard-Cluster-Namespace ist, wählen Sie für Namespace den Service-Namespace aus.
-
(Optional) Konfigurieren Sie Test-Traffic-Header-Regeln für blue/green Bereitstellungen. Geben Sie unter Datenverkehrs-Routing testen Folgendes an:
-
Wählen Sie Test-Traffic-Header-Regeln aktivieren aus, um während des Tests bestimmte Anfragen an die Green Service-Revision weiterzuleiten.
-
Konfigurieren Sie für Regeln für den Header-Abgleich die Kriterien für die Weiterleitung von Testdatenverkehr:
-
Header-Name: Geben Sie den Namen des HTTP-Headers ein, dem der Abgleich entsprechen soll (z. B.
X-Test-Version
oderUser-Agent
). -
Übereinstimmungstyp: Wählen Sie die passenden Kriterien aus:
-
Exakte Übereinstimmung: Leitet Anfragen weiter, bei denen der Header-Wert genau dem angegebenen Wert entspricht
-
Header vorhanden: Leitet Anfragen weiter, die den angegebenen Header enthalten, unabhängig vom Wert
-
Mustervergleich: Leitet Anfragen weiter, bei denen der Header-Wert einem bestimmten Muster entspricht
-
-
Header-Wert (wenn „Exact Match“ oder „Pattern Match“ verwendet wird): Geben Sie den Wert oder das Muster ein, mit dem abgeglichen werden soll.
Sie können mehrere Header-Abgleichsregeln hinzufügen, um eine komplexe Routing-Logik zu erstellen. Anfragen, die einer der konfigurierten Regeln entsprechen, werden zum Testen an die Green Service Revision weitergeleitet.
-
-
Wählen Sie Header-Regel hinzufügen, um zusätzliche Bedingungen für den Header-Abgleich zu konfigurieren.
Anmerkung
Mithilfe von Test-Traffic-Header-Regeln können Sie neue Funktionen mit kontrolliertem Datenverkehr validieren, bevor Sie die vollständige Bereitstellung abschließen. Auf diese Weise können Sie die grüne Service-Revision mit spezifischen Anfragen (z. B. von internen Testtools oder Beta-Benutzern) testen und gleichzeitig den normalen Datenfluss zur blauen Service-Revision aufrechterhalten.
-
-
(Optional) Geben Sie eine Protokollkonfiguration an. Wählen Sie Protokollsammlung verwenden aus. Die Standardoption sendet Container-Logs an CloudWatch Logs. Die anderen Protokolltreiberoptionen werden mit konfiguriert AWS FireLens. Weitere Informationen finden Sie unter Amazon ECS-Protokolle an einen AWS Service senden oder AWS Partner.
Im Folgenden wird jedes Container-Protokollziel ausführlicher beschrieben.
-
Amazon CloudWatch — Konfigurieren Sie die Aufgabe, um Container-Logs an CloudWatch Logs zu senden. Es werden die Standardoptionen für Protokolltreiber bereitgestellt, mit denen in Ihrem Namen eine CloudWatch Protokollgruppe erstellt wird. Um einen anderen Protokollgruppen-Namen anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon Data Firehose — Konfigurieren Sie die Aufgabe, um Containerprotokolle an Firehose zu senden. Es werden die standardmäßigen Protokolltreiberoptionen bereitgestellt, die Protokolle an einen Firehose-Lieferstream senden. Um einen anderen Namen für den Bereitstellungsdatenstrom anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon Kinesis Data Streams — Konfigurieren Sie die Aufgabe so, dass Container-Logs an Kinesis Data Streams gesendet werden. Es werden die standardmäßigen Protokolltreiberoptionen bereitgestellt, mit denen Protokolle an einen Kinesis Data Streams Streams-Stream gesendet werden. Um einen anderen Datenstrom-Namen anzugeben, ändern Sie die Werte der Treiberoption.
-
Amazon OpenSearch Service — Konfigurieren Sie die Aufgabe, um Container-Logs an eine OpenSearch Service-Domain zu senden. Die Optionen für den Protokolltreiber müssen bereitgestellt werden.
-
Amazon S3 — Konfigurieren Sie die Aufgabe, um Container-Logs an einen Amazon S3 S3-Bucket zu senden. Die Standardoptionen für den Protokolltreiber sind verfügbar, Sie müssen jedoch einen gültigen Amazon S3 S3-Bucket-Namen angeben.
-
-
-
(Optional) Konfigurieren Sie den Lastenausgleich für die blaue/grüne Bereitstellung.
Typ Elastic Load Balancing Schritte Application Load Balancer
-
Wählen Sie als Load Balancer-Typ Application Load Balancer aus.
-
Wählen Sie Erstellen eines neuen Load Balancers, um einen neuen Application Load Balancer zu erstellen, oder Verwenden eines vorhandenen Load Balancers um einen vorhandenen Application Load Balancer auszuwählen.
-
Wählen Sie für Container den Container aus, der den Service hostet.
-
Geben Sie für Load balancer name (Name des Load Balancers) einen eindeutigen Namen ein.
-
Geben Sie für Listener (Zuhörer) einen Port und ein Protokoll für den Application Load Balancer an, an dem der Application Load Balancer auf Verbindungsanfragen lauschen soll. Standardmäßig wird der Load Balancer so konfiguriert, dass er Port 80 und HTTP verwendet.
-
Geben Sie unter Produktionsregel die Bewertungsreihenfolge und das Pfadmuster für die Regel ein.
Diese Regel gilt für den Revisionsdatenverkehr Ihres Produktionsdienstes (blau).
-
Geben Sie unter Testregel die Bewertungsreihenfolge und das Pfadmuster für die Regel ein.
Diese Regel gilt für den Revisionsverkehr Ihres Testdienstes (grün).
-
-
Konfigurieren Sie für Zielgruppe Folgendes:
-
Geben Sie für Target group name (Name der Zielgruppe) einen Namen und ein Protokoll für die Zielgruppe ein, an die der Application Load Balancer Anforderungen weiterleitet.
-
Wählen Sie unter Protokoll das Protokoll für die Zielgruppe aus, an die der Application Load Balancer Anfragen weiterleitet. Standardmäßig leitet die Zielgruppe Anforderungen an den ersten Container weiter, der in Ihrer Aufgabendefinition definiert ist.
-
Geben Sie unter Verzögerung bei der Registrierung die Anzahl der Sekunden ein, auf die der Load Balancer den Zielstatus ändern soll.
UNUSED
Standardmäßig ist ein Zeitraum von 300 Sekunden festgelegt. -
Geben Sie für Health check path (Pfad für die Zustandsprüfung) einen Pfad an, der in Ihrem Container vorhanden ist, an den der Application Load Balancer regelmäßig Anforderungen senden soll, um den Verbindungszustand zwischen dem Application Load Balancer und dem Container zu überprüfen. Der Standard ist das Root-Verzeichnis (
/
). -
Geben Sie unter Alternativer Gruppenname den Gruppennamen für die Zielgruppe für Ihre Testdienstversion (grün) ein.
-
Network Load Balancer -
Wählen Sie für Load balancer type (Load-Balancer-Typ) Network Load Balancer (Network Load Balancer) aus.
-
Wählen Sie für Load Balancer (Load Balancer) einen vorhandenen Network Load Balancer.
-
Für Choose container to load balance (Container für den Lastausgleich wählen) wählen Sie den Container aus, der den Service hostet.
-
Wählen Sie für Production Listener den Production Listener Port und das Production Listener Protocol aus.
Dies ist der Listener für den Revisionsdatenverkehr Ihres Produktionsdienstes (blau).
-
Wählen Sie für Test-Listener den Test-Listener-Port und das Test-Listener-Protokoll aus.
Dies ist der Listener für den Revisionsverkehr Ihres Testdienstes (grün).
-
Konfigurieren Sie für Zielgruppe Folgendes:
-
Geben Sie unter Target group name (Name der Zielgruppe) einen Namen und ein Protokoll für die Zielgruppe ein, an die der Network Load Balancer Anfragen weiterleitet.
-
Wählen Sie unter Protokoll das Protokoll für die Zielgruppe aus, an die der Network Load Balancer Anfragen weiterleitet. Standardmäßig leitet die Zielgruppe Anforderungen an den ersten Container weiter, der in Ihrer Aufgabendefinition definiert ist.
-
Geben Sie unter Verzögerung bei der Registrierung die Anzahl der Sekunden ein, auf die der Load Balancer den Zielstatus ändern soll.
UNUSED
Standardmäßig ist ein Zeitraum von 300 Sekunden festgelegt. -
Geben Sie für Health check path (Pfad für die Zustandsprüfung) einen Pfad an, der in Ihrem Container vorhanden ist, an den der Application Load Balancer regelmäßig Anforderungen senden soll, um den Verbindungszustand zwischen dem Application Load Balancer und dem Container zu überprüfen. Der Standard ist das Root-Verzeichnis (
/
). -
Geben Sie unter Alternativer Gruppenname den Gruppennamen für die Zielgruppe für Ihre Testdienstversion (grün) ein.
-
-
-
(Optional) Um Ihren Service und Ihre Aufgaben besser identifizieren zu können, erweitern Sie den Bereich Tags (Tags) und konfigurieren Sie dann Ihre Tags.
Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clusternamen und den Aufgabendefinitions-Tags versieht, wählen Sie Verwaltete Amazon-ECS-Tags einschalten und dann für Tags verbreiten von die Option Aufgabendefinitionen.
Damit Amazon ECS alle neu gestarteten Aufgaben automatisch mit Tags für den Clustername und die Service-Tags versieht, wählen Sie Verwaltete Amazon-ECS-Tags einschalten und dann für Tags verbreiten von die Option Service.
Hinzufügen oder Entfernen eines Tag.
-
[Ein Tag hinzufügen] Wählen Sie Add tag (Tag hinzufügen) und führen Sie dann das Folgende aus:
-
Geben Sie bei Key (Schlüssel) den Schlüsselnamen ein.
-
Geben Sie bei Value (Wert) den Wert des Schlüssels ein.
-
-
[Tag entfernen] Wählen Sie neben dem Tag die Option Remove tag (Tag löschen) aus.
-
-
Wählen Sie Erstellen aus.
- AWS CLI
-
-
Erstellen Sie eine Datei mit dem Namen
service-definition.json
und dem folgenden Inhalt.Ersetzen Sie die
user-input
durch Ihre Werte.{ "serviceName": "
myBlueGreenService
", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster
", "taskDefinition": "sample-fargate:1
", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299
", "subnet-00bb3bd7a73526788
", "subnet-0048a611aaec65477
" ], "securityGroups": [ "sg-09d45005497daa123
" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 2, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true }, "lifecycleHooks": [ { "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample
", "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke
", "lifecycleStages": [ "PRE_SCALE_UP" ] } ] }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197
", "containerName": "fargate-app
", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199
", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911
", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS
" } } ] } -
Führen Sie
create-service
.Ersetze die
user-input
durch deine Werte.aws ecs create-service --cli-input-json file://service-definition.json
Alternativ können Sie das folgende Beispiel verwenden, das einen blue/green Bereitstellungsdienst mit einer Load Balancer-Konfiguration erstellt:
aws ecs create-service \ --cluster "
arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster
" \ --service-name "blue-green-example-service" \ --task-definition "nginxServer:1" \ --launch-type "FARGATE" \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12345
,subnet-67890
,subnet-abcdef
,subnet-fedcba
],securityGroups=[sg-12345
],assignPublicIp=ENABLED}" \ --desired-count 3 \ --deployment-controller "type=ECS" \ --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \ --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890
,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012
:targetgroup/MyBGtg2/0987654321fedcba
,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef
,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole
}"
-
Nächste Schritte
Aktualisieren Sie den Dienst, um die Bereitstellung zu starten. Weitere Informationen finden Sie unter Aktualisierung eines Amazon ECS-Service.
-
Überwachen Sie den Bereitstellungsprozess, um sicherzustellen, dass er dem blue/green Muster folgt:
-
Die Green Service-Revision wurde erstellt und skaliert
-
Der Testverkehr wird an die grüne Version weitergeleitet (falls konfiguriert)
-
Der Produktionsverkehr wird auf die grüne Version umgestellt
-
Nach Ablauf der Backzeit ist die blaue Version beendet
-