Application-Load-Balancer-Ressourcen für Blau/Grün-Bereitstellungen - Amazon Elastic Container Service

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 mit awsvpc-Netzwerkmodus)

  • Protokoll: HTTP (oder das Protokoll, das Ihre Anwendung verwendet)

  • Port: Der Port, auf dem Ihre Anwendung lauscht (normalerweise 80 fü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 \ --name blue-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-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 \ --name green-target-group \ --protocol HTTP \ --port 80 \ --vpc-id vpc-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 \ --name my-application-load-balancer \ --type application \ --security-groups sg-abcd1234 \ --subnets subnet-12345678 subnet-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-arn arn: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-arn arn: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-arn arn: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-arn arn: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: Auf BLUE_GREEN einstellen, 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:

  1. Ausgangszustand: Der gesamte Produktionsdatenverkehr wird an die primäre Zielgruppe weitergeleitet (blaue Service-Revision).

  2. Bereitstellung der grünen Service-Revision: Amazon ECS stellt die neuen Aufgaben bereit und registriert sie bei der alternativen Zielgruppe.

  3. 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.

  4. Verlagerung des Produktionsdatenverkehrs: Amazon ECS aktualisiert die Produktions-Listener-Regel, um den Datenverkehr an die alternative Zielgruppe weiterzuleiten (grüne Service-Revision).

  5. Bake-Zeit: Die Dauer, in der sowohl blaue als auch grüne Service-Revisionen gleichzeitig ausgeführt werden, nachdem der Produktionsdatenverkehr verlagert wurde.

  6. 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).