Network-Load-Balancer-Ressourcen für Amazon-ECS-Blau/Grün-Bereitstellungen
Um einen Network Load Balancer mit Blau/Grün-Bereitstellungen von Amazon ECS zu verwenden, müssen Sie bestimmte Ressourcen konfigurieren, die das Routing des Datenverkehrs zwischen den blauen und grünen Service-Revisionen ermöglichen. In diesem Abschnitt werden die erforderlichen Komponenten und ihre Konfiguration erläutert.
Wenn Ihre Konfiguration einen Network Load Balancer beinhaltet, fügt Amazon ECS den folgenden Lebenszyklusphasen eine Verzögerung von 10 Minuten hinzu:
-
PRE_SCALE_UP
-
TEST_TRAFFIC_SHIFT
-
PRODUCTION_TRAFFIC_SHIFT
Diese Verzögerung ist auf Timing-Probleme des Network Load Balancer zurückzuführen, die zu einer Diskrepanz zwischen den konfigurierten Datenverkehrs-Gewichtungen und dem tatsächlichen Datenverkehrs-Routing auf der Datenebene führen können.
Zielgruppen
Für Blau/Grün-Bereitstellungen mit einem Network Load Balancer müssen Sie zwei Zielgruppen erstellen:
-
Eine primäre Zielgruppe für die blaue Service-Revision (aktueller Produktionsdatenverkehr)
-
Eine alternative Zielgruppe für die grüne Service-Revision (neue Service-Revision)
Beide Zielgruppen sollten mit den folgenden Einstellungen konfiguriert werden:
-
Zieltyp:
ip(für Fargate oder EC2 mitawsvpc-Netzwerkmodus) -
Protokoll:
TCP(oder das Protokoll, das Ihre Anwendung verwendet) -
Port: Der Port, auf dem Ihre Anwendung lauscht (normalerweise
80für HTTP) -
VPC: Dieselbe VPC wie Ihre Amazon-ECS-Aufgaben
-
Zustandsprüfung-Einstellungen: So konfiguriert, dass sie den Zustand Ihrer Anwendung ordnungsgemäß überprüfen
Für TCP-Zustandsprüfungen stellt der Network Load Balancer eine TCP-Verbindung mit dem Ziel her. Wenn die Verbindung erfolgreich ist, gilt das Ziel als fehlerfrei.
Für HTTP/HTTPS-Zustandsprüfungen sendet der Network Load Balancer eine HTTP/HTTPS-Anfrage an das Ziel und verifiziert die Antwort.
Während einer Blau/Grün-Bereitstellung registriert Amazon ECS je nach Bereitstellungsphase automatisch Aufgaben bei der entsprechenden Zielgruppe.
Beispiel Erstellen von Zielgruppen für einen Network Load Balancer
Mit den folgenden AWS-CLI-Befehlen werden zwei Zielgruppen für die Verwendung mit einem Network Load Balancer in einer Blau/Grün-Bereitstellung erstellt:
aws elbv2 create-target-group \ --nameblue-target-group\ --protocol TCP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-protocol TCP aws elbv2 create-target-group \ --namegreen-target-group\ --protocol TCP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-protocol TCP
Network Load Balancer
Sie müssen einen Network Load Balancer mit der folgenden Konfiguration erstellen:
-
Schema: Mit dem Internet verbunden oder intern, je nach Ihren Anforderungen
-
IP-Adresstyp: IPv4
-
VPC: Dieselbe VPC wie Ihre Amazon-ECS-Aufgaben
-
Subnetze: Mindestens zwei Subnetze in verschiedenen Availability Zones.
Im Gegensatz zu Application Load Balancers arbeiten Network Load Balancers auf der Transportebene (Ebene 4) und verwenden keine Sicherheitsgruppen. Stattdessen müssen Sie sicherstellen, dass die Ihren Amazon-ECS-Aufgaben zugeordneten Sicherheitsgruppen Datenverkehr vom Network Load Balancer auf den Listener-Ports erlauben.
Beispiel Erstellen eines Network Load Balancers
Der folgende AWS-CLI-Befehl erstellt einen Network Load Balancer für die Verwendung in einer Blau/Grün-Bereitstellung:
aws elbv2 create-load-balancer \ --namemy-network-load-balancer\ --type network \ --subnetssubnet-12345678subnet-87654321
Überlegungen zur Verwendung von NLB mit Blau/Grün-Bereitstellungen
Wenn Sie einen Network Load Balancer für Blau/Grün-Bereitstellungen verwenden, sollten Sie Folgendes berücksichtigen:
-
Ebene-4-Betrieb: Network Load Balancers arbeiten auf der Transportebene (Ebene 4) und untersuchen nicht den Inhalt der Anwendungsebene (Ebene 7). Das bedeutet, dass Sie keine HTTP-Header oder -Pfade für Routing-Entscheidungen verwenden können.
-
Zustandsprüfungen: Die Zustandsprüfungen des Network Load Balancer sind auf die Protokolle TCP, HTTP oder HTTPS beschränkt. Bei TCP-Zustandsprüfungen überprüft der Network Load Balancer nur, ob die Verbindung hergestellt werden kann.
-
Aufrechterhaltung der Verbindung: Network Load Balancer speichern die Quell-IP-Adresse des Clients, was aus Sicherheits- und Protokollierungsgründen nützlich sein kann.
-
Statische IP-Adressen: Network Load Balancer stellen statische IP-Adressen für jedes Subnetz bereit. Dies kann nützlich sein, wenn Clients auf die Whitelist gesetzt werden oder wenn Clients eine Verbindung zu einer festen IP-Adresse herstellen müssen.
-
Test-Datenverkehr: Da Network Load Balancer kein inhaltsbasiertes Routing unterstützen, muss der Test-Datenverkehr an einen anderen Port als der Produktionsdatenverkehr gesendet werden.
Listener und Regeln
Für Blau/Grün-Bereitstellungen mit einem Network Load Balancer müssen Sie Listener konfigurieren:
-
Produktions-Listener: Verwaltet den Produktionsdatenverkehr (normalerweise auf Port 80 oder 443)
-
Leitet den Verkehr zunächst an die primäre Zielgruppe weiter (blaue Service-Revision)
-
Leitet den Verkehr nach der Bereitstellung an die alternative Zielgruppe weiter (grüne Service-Revision)
-
-
Test-Listener (erforderlich): Verarbeitet den Test-Datenverkehr, um die grüne Service-Revision zu validieren, bevor der Produktionsdatenverkehr verlagert wird
-
Kann auf einem anderen Port konfiguriert werden (z. B. 8080 oder 8443)
-
Leitet den Datenverkehr während des Tests an die alternative Zielgruppe weiter (grüne Service-Revision)
-
Im Gegensatz zu Application Load Balancers unterstützen Network Load Balancer keine inhaltsbasierten Routing-Regeln. Stattdessen wird der Datenverkehr auf der Grundlage des Listener-Ports und des Protokolls weitergeleitet.
Die folgenden AWS-CLI-Befehle erstellen Produktions- und Test-Listener für einen Network Load Balancer:
Ersetzen Sie user-input durch Ihre eigenen Werte.
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456\ --protocol TCP \ --port 80 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456\ --protocol TCP \ --port 8080 \ --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456
Service-Konfiguration
Sie müssen über die erforderlichen Berechtigungen verfügen, um Amazon ECS die Verwaltung von Load Balancer-Ressourcen in Ihren Clustern in Ihrem Namen zu erlauben. Weitere Informationen finden Sie unter Amazon-ECS-IAM-Infrastrukturrolle für Load Balancer.
Wenn Sie einen Amazon-ECS-Service für Blau/Grün-Bereitstellungen mit einem Network Load Balancer erstellen oder aktualisieren, müssen Sie die folgende Konfiguration angeben:
Ersetzen Sie user-input durch Ihre eigenen Werte.
Die wichtigsten Komponenten dieser Konfiguration sind:
-
targetGroupArn: Der ARN der primären Zielgruppe (blaue Service-Revision). -
alternateTargetGroupArn: Der ARN der alternativen Zielgruppe (grüne Service-Revision). -
productionListenerRule: Der ARN des Listener für den Produktionsdatenverkehr. -
testListenerRule: (optional) Der ARN des Listener für den Test-Datenverkehr. -
roleArn: Der ARN der Rolle, die es Amazon ECS erlaubt, Ressourcen für Network Load Balancer zu verwalten. -
strategy: AufBLUE_GREENeinstellen, um Blau/Grün-Bereitstellungen zu ermöglichen. -
bakeTimeInMinutes: Die Wartezeit nach der Bereitstellung der grünen Service-Revision, bevor der Produktionsdatenverkehr verlagert wird
{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456", "productionListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456", "testListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/2345678901234567", "roleArn": "arn:aws:iam::123456789012:role/ecs-nlb-role" } } ], "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 5 } }
Datenverkehrsfluss während der Bereitstellung
Bei einer Blau/Grün-Bereitstellung mit einem Network Load Balancer fließt der Datenverkehr wie folgt durch das System:
-
Ausgangszustand: Der gesamte Produktionsdatenverkehr wird an die primäre Zielgruppe weitergeleitet (blaue Service-Revision).
-
Bereitstellung der grünen Service-Revision: Amazon ECS stellt die neuen Aufgaben bereit und registriert sie bei der alternativen Zielgruppe.
-
Test-Datenverkehr: Wenn ein Test-Listener konfiguriert ist, wird der Test-Datenverkehr an die alternative Zielgruppe weitergeleitet, um die grüne Service-Revision zu validieren.
-
Verlagerung des Produktionsdatenverkehrs: Amazon ECS aktualisiert den Produktions-Listener, um den Datenverkehr an die alternative Zielgruppe weiterzuleiten (grüne Service-Revision).
-
Bake-Zeit: Die Dauer, in der sowohl blaue als auch grüne Service-Revisionen gleichzeitig ausgeführt werden, nachdem der Produktionsdatenverkehr verlagert wurde.
-
Abschluss: Nach einer erfolgreichen Bereitstellung wird die blaue Service-Revision beendet.
Wenn während der Bereitstellung Probleme festgestellt werden, kann Amazon ECS automatisch ein Rollback durchführen, indem der Datenverkehr an die primäre Zielgruppe zurückgeleitet wird (blaue Service-Revision).