Application-Load-Balancer-Ressourcen für Blau/Grün-Bereitstellungen
Um Application Load Balancers 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.
Zielgruppen
Für Blau/Grün-Bereitstellungen mit Elastic Load Balancing 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 Version)
Beide Zielgruppen sollten mit den folgenden Einstellungen konfiguriert werden:
-
Zieltyp:
IP(für Fargate oder EC2 mitawsvpc-Netzwerkmodus) -
Protokoll:
HTTP(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
Während einer Blau/Grün-Bereitstellung registriert Amazon ECS je nach Bereitstellungsphase automatisch Aufgaben bei der entsprechenden Zielgruppe.
Beispiel Zielgruppen für einen Application Load Balancer erstellen
Mit den folgenden CLI-Befehlen werden zwei Zielgruppen für die Verwendung mit einem Application Load Balancer in einer Blau/Grün-Bereitstellung erstellt:
aws elbv2 create-target-group \ --nameblue-target-group\ --protocol HTTP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2 aws elbv2 create-target-group \ --namegreen-target-group\ --protocol HTTP \ --port 80 \ --vpc-idvpc-abcd1234\ --target-type ip \ --health-check-path / \ --health-check-protocol HTTP \ --health-check-interval-seconds 30 \ --health-check-timeout-seconds 5 \ --healthy-threshold-count 2 \ --unhealthy-threshold-count 2
Application Load Balancer
Sie müssen einen Application 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.
-
Sicherheitsgruppen: Eine Sicherheitsgruppe, die den Datenverkehr auf den Listener-Ports zulässt
Die dem Application Load Balancer zugeordnete Sicherheitsgruppe muss über eine ausgehende Regel verfügen, die den Datenverkehr zu der Sicherheitsgruppe zulässt, die Ihren Amazon-ECS-Aufgaben zugeordnet ist.
Beispiel Erstellen eines Application Load Balancers
Der folgende CLI-Befehl erstellt einen Application Load Balancer für die Verwendung in einer Blau/Grün-Bereitstellung:
aws elbv2 create-load-balancer \ --namemy-application-load-balancer\ --type application \ --security-groupssg-abcd1234\ --subnetssubnet-12345678subnet-87654321
Listener und Regeln
Für Blau/Grün-Bereitstellungen müssen Sie Listener auf Ihrem Application Load Balancer 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 (optional): Verarbeitet den Test-Datenverkehr, um die grüne Service-Version zu validieren, bevor der Produktionsdatenverkehr verlagert wird
-
Kann an 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)
-
Während einer Blau/Grün-Bereitstellung aktualisiert Amazon ECS je nach Bereitstellungsphase automatisch die Listener-Regeln, um den Datenverkehr an die entsprechenden Zielgruppe zu leiten.
Beispiel Erstellen eines Produktions-Listeners
Der folgende CLI-Befehl erstellt einen Produktions-Listener auf Port 80, der den Datenverkehr an die primäre (blaue) Zielgruppe weiterleitet:
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456\ --protocol HTTP \ --port 80 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
Beispiel Erstellen eines Test-Listeners
Der folgende CLI-Befehl erstellt einen Test-Listener auf Port 8080, der den Datenverkehr an die alternative (grüne) Zielgruppe weiterleitet:
aws elbv2 create-listener \ --load-balancer-arnarn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456\ --protocol HTTP \ --port 8080 \ --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Beispiel Erstellen einer Listener-Regel für pfadbasiertes Routing
Der folgende CLI-Befehl erstellt eine Regel, die den Datenverkehr für einen bestimmten Pfad zum Testen an die grüne Zielgruppe weiterleitet:
aws elbv2 create-rule \ --listener-arnarn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012\ --priority 10 \ --conditions Field=path-pattern,Values='/test/*' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
Beispiel Erstellen einer Listener-Regel für Header-basiertes Routing
Der folgende CLI-Befehl erstellt eine Regel, die Datenverkehr mit einem bestimmten Header zum Testen an die grüne Zielgruppe weiterleitet:
aws elbv2 create-rule \ --listener-arnarn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012\ --priority 20 \ --conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \ --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
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 Elastic Load Balancing 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 der Listener-Regel für den Produktionsdatenverkehr. -
roleArn: Der ARN der Rolle, die es Amazon ECS erlaubt, Ressourcen für Elastic Load Balancing zu verwalten. -
strategy: AufBLUE_GREENeinstellen, um Blau/Grün-Bereitstellungen zu ermöglichen. -
bakeTimeInMinutes: Die Dauer, in der sowohl blaue als auch grüne Service-Revisionen gleichzeitig ausgeführt werden, nachdem der Produktionsdatenverkehr verlagert wurde. -
TestListenerRule: Der ARN der Listener-Regel für den Test-Datenverkehr. Dieser Parameter ist optional.
{ "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456", "containerName": "container-name", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012", "productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678", "roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role" } } ], "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 5 } }
Datenverkehrsfluss während der Bereitstellung
Bei einer Blau/Grün-Bereitstellung mit Elastic Load Balancing 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 die Produktions-Listener-Regel, 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).