Risorse Application Load Balancer per implementazioni blu/green, lineari e canary - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risorse Application Load Balancer per implementazioni blu/green, lineari e canary

Per utilizzare Application Load Balancers con le blue/green distribuzioni di Amazon ECS, devi configurare risorse specifiche che consentano l'instradamento del traffico tra le revisioni del servizio blu e verde.

Gruppi di destinazione

Per le blue/green implementazioni con ELB, è necessario creare due gruppi target:

  • Un gruppo di destinazione primario per la revisione del servizio blu (traffico di produzione attuale)

  • Un gruppo di destinazione alternativo per la revisione del servizio verde (nuova versione)

Entrambi i gruppi di destinazione devono essere configurati con le seguenti impostazioni:

  • Tipo di obiettivo: IP (per Fargate o EC2 con modalità di awsvpc rete)

  • Protocollo: HTTP (o il protocollo utilizzato dall'applicazione)

  • Porta: la porta su cui l'applicazione è in ascolto (in genere 80 per HTTP)

  • VPC: lo stesso VPC delle attività di Amazon ECS

  • Impostazioni di controllo dell'integrità: configurate per controllare correttamente l'integrità dell'applicazione

Durante una blue/green distribuzione, Amazon ECS registra automaticamente le attività con il gruppo target appropriato in base alla fase di distribuzione.

Esempio Creazione di gruppi di destinazione per gli Application Load Balancer

I seguenti comandi CLI creano due gruppi target da utilizzare con un Application Load Balancer in una distribuzione: blue/green

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

È necessario creare un Application Load Balancer con la seguente configurazione:

  • Schema: connesso a Internet o interno, a seconda delle esigenze

  • Tipo di indirizzo IP: IPv4

  • VPC: lo stesso VPC delle attività di Amazon ECS

  • Sottoreti: almeno due sottoreti devono trovarsi in diverse zone di disponibilità

  • Gruppi di sicurezza: un gruppo di sicurezza che consente il traffico sulle porte del listener

Il gruppo di sicurezza collegato all'Application Load Balancer deve avere una regola in uscita che consenta il traffico verso il gruppo di sicurezza collegato alle attività di Amazon ECS.

Esempio Creazione di un Application Load Balancer

Il seguente comando CLI crea un Application Load Balancer da usare in un'implementazione blu/verde:

aws elbv2 create-load-balancer \ --name my-application-load-balancer \ --type application \ --security-groups sg-abcd1234 \ --subnets subnet-12345678 subnet-87654321

Listener e regole

Per le blue/green distribuzioni, è necessario configurare i listener sull'Application Load Balancer:

  • Listener di produzione: gestisce il traffico di produzione (in genere sulla porta 80 o 443)

    • Inizialmente inoltra il traffico al gruppo di destinazione primario (revisione blu del servizio)

    • Dopo l'implementazione, inoltra il traffico al gruppo di destinazione alternativo (revisione del servizio verde)

  • Listener di test (facoltativo): gestisce il traffico di test per convalidare la revisione del servizio verde prima di spostare il traffico di produzione

    • Può essere configurato su una porta diversa (ad esempio, 8080 o 8443)

    • Inoltra il traffico al gruppo di destinazione alternativo (revisione del servizio verde) durante il test

Durante una blue/green distribuzione, Amazon ECS aggiorna automaticamente le regole del listener per indirizzare il traffico verso il gruppo target appropriato in base alla fase di distribuzione.

Esempio Creazione di un listener di produzione

Il seguente comando CLI crea un listener di produzione sulla porta 80 che inoltra il traffico al gruppo di destinazione primario (blu):

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
Esempio Creazione di un listener di test

Il seguente comando CLI crea un listener di test sulla porta 8080 che inoltra il traffico al gruppo di destinazione alternativo (verde):

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
Esempio Creazione di una regola del listener per l'instradamento basato sul percorso

Il seguente comando CLI crea una regola che inoltra il traffico per un percorso specifico al gruppo di destinazione verde per il test:

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
Esempio Creazione di una regola del listener per l'instradamento basato sull'intestazione

Il seguente comando CLI crea una regola che inoltra il traffico con un'intestazione specifica al gruppo di destinazione verde per il test:

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

Configurazione del servizio

È necessario disporre delle autorizzazioni per consentire ad Amazon ECS di gestire le risorse del bilanciatore del carico nei cluster. Per ulteriori informazioni, consulta Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico.

Quando crei o aggiorni un servizio Amazon ECS per blue/green distribuzioni con ELB, devi specificare la seguente configurazione.

Sostituiscili con i tuoi valori. user-input

I componenti chiave di questa configurazione sono:

  • targetGroupArn: l'ARN del gruppo di destinazione principale (revisione del servizio blu).

  • alternateTargetGroupArn: l'ARN del gruppo di destinazione alternativo (revisione del servizio verde).

  • productionListenerRule: l'ARN della regola del listener per il traffico di produzione.

  • roleArn: L'ARN del ruolo che consente ad Amazon ECS di gestire le risorse ELB.

  • strategy: impostato su BLUE_GREEN per abilitare implementazioni blu/verdi.

  • bakeTimeInMinutes: la durata in cui le revisioni del servizio blu e verde vengono eseguite contemporaneamente dopo lo spostamento del traffico di produzione.

  • TestListenerRule: l'ARN della regola del listener per il traffico di test. Si tratta di un parametro facoltativo.

{ "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 } }

Flusso di traffico durante l'implementazione

Durante una blue/green distribuzione con ELB, il traffico attraversa il sistema nel modo seguente:

  1. Stato iniziale: tutto il traffico di produzione viene instradato al gruppo di destinazione principale (revisione blu del servizio).

  2. Implementazione della revisione del servizio verde: Amazon ECS implementa le nuove attività e le registra con il gruppo di destinazione alternativo.

  3. Traffico di test: se è configurato un listener di test, il traffico di test viene instradato al gruppo di destinazione alternativo per convalidare la revisione del servizio verde.

  4. Spostamento del traffico di produzione: Amazon ECS aggiorna la regola del listener di produzione per instradare il traffico verso il gruppo di destinazione alternativo (revisione del servizio verde).

  5. Tempo di incorporamento: la durata in cui le revisioni del servizio blu e verde vengono eseguite contemporaneamente dopo lo spostamento del traffico di produzione.

  6. Completamento: dopo una corretta implementazione, la revisione del servizio blu viene interrotta.

Se vengono rilevati problemi durante l'implementazione, Amazon ECS può eseguire automaticamente il rollback instradando il traffico verso il gruppo di destinazione principale (revisione blu del servizio).