Risorse di Application Load Balancer per le implementazioni blu/verdi - Amazon Elastic Container Service

Risorse di Application Load Balancer per le implementazioni blu/verdi

Per utilizzare gli Application Load Balancer con le implementazioni blu/verdi di Amazon ECS, è necessario configurare risorse specifiche che consentano l'instradamento del traffico tra le revisioni del servizio blu e verde.

Gruppi di destinazione

Per le implementazioni blu/verdi con il bilanciamento del carico elastico, è necessario creare due gruppi di destinazione:

  • 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 destinazione: IP (per Fargate o EC2 con modalità di rete awsvpc)

  • 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 un'implementazione blu/verde, Amazon ECS registra automaticamente le attività con il gruppo di destinazione appropriato in base alla fase di implementazione.

Esempio Creazione di gruppi di destinazione per gli Application Load Balancer

I seguenti comandi CLI creano due gruppi di destinazione da utilizzare con un Application Load Balancer in un'implementazione blu/verde:

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 implementazioni blu/verdi, è 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 un'implementazione blu/verde, Amazon ECS aggiorna automaticamente le regole del listener per instradare il traffico al gruppo di destinazione appropriato in base alla fase di implementazione.

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, consultare Ruolo IAM dell'infrastruttura Amazon ECS per i bilanciatori del carico.

Quando si crea o si aggiorna un servizio Amazon ECS per implementazioni blu/verdi con il bilanciamento del carico elastico, è necessario specificare la seguente configurazione.

Sostituire user-input con i propri valori.

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 del bilanciamento del carico elastico.

  • 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 un'implementazione blu/verde con bilanciamento del carico elastico, 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).