Risorse Network Load Balancer per le implementazioni blu/verdi di Amazon ECS - 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 Network Load Balancer per le implementazioni blu/verdi di Amazon ECS

Per utilizzare un Network Load Balancer con blue/green distribuzioni Amazon ECS, devi configurare risorse specifiche che consentano il routing del traffico tra le revisioni del servizio blu e verde. Questa sezione spiega i componenti richiesti e la loro configurazione.

Quando la configurazione include un Network Load Balancer, Amazon ECS aggiunge un ritardo di 10 minuti alle seguenti fasi del ciclo di vita:

  • PRE_SCALE_UP

  • TEST_TRAFFIC_SHIFT

  • PRODUCTION_TRAFFIC_SHIFT

Questo ritardo è dovuto a problemi di temporizzazione del Network Load Balancer che possono causare una mancata corrispondenza tra i pesi del traffico configurati e l'effettivo routing del traffico nel piano dati.

Gruppi target

Per le blue/green implementazioni con un Network Load Balancer, è necessario creare due gruppi target:

  • Un gruppo target primario per la revisione del servizio blu (traffico di produzione corrente)

  • Un gruppo target alternativo per la revisione del servizio verde (nuova revisione del servizio)

Entrambi i gruppi target devono essere configurati con le seguenti impostazioni:

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

  • Protocollo: TCP (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 tue attività Amazon ECS

  • Impostazioni Health check: configurate per controllare correttamente lo stato dell'applicazione

    Per i controlli dello stato del protocollo TCP, il Network Load Balancer stabilisce una connessione TCP con la destinazione. Se la connessione ha esito positivo, la destinazione viene considerata integra.

    Per i controlli di HTTP/HTTPS integrità, il Network Load Balancer invia una HTTP/HTTPS richiesta al bersaglio e verifica la risposta.

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 target per un Network Load Balancer

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

aws elbv2 create-target-group \ --name blue-target-group \ --protocol TCP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-protocol TCP aws elbv2 create-target-group \ --name green-target-group \ --protocol TCP \ --port 80 \ --vpc-id vpc-abcd1234 \ --target-type ip \ --health-check-protocol TCP

Network Load Balancer

È necessario creare un Network 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 tue attività Amazon ECS

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

A differenza degli Application Load Balancer, i Network Load Balancer operano a livello di trasporto (Layer 4) e non utilizzano gruppi di sicurezza. È invece necessario assicurarsi che i gruppi di sicurezza associati alle attività di Amazon ECS consentano il traffico proveniente dal Network Load Balancer sulle porte del listener.

Esempio Creazione di un Network Load Balancer

Il seguente comando AWS CLI crea un Network Load Balancer da utilizzare in una distribuzione: blue/green

aws elbv2 create-load-balancer \ --name my-network-load-balancer \ --type network \ --subnets subnet-12345678 subnet-87654321

Considerazioni sull'utilizzo di NLB con le distribuzioni blue/green

Quando utilizzi un Network Load Balancer per le blue/green distribuzioni, considera quanto segue:

  • Funzionamento a livello 4: i Network Load Balancer operano a livello di trasporto (Layer 4) e non ispezionano il contenuto a livello di applicazione (Layer 7). Ciò significa che non è possibile utilizzare intestazioni o percorsi HTTP per le decisioni di routing.

  • Controlli dello stato: i controlli dello stato di Network Load Balancer sono limitati ai protocolli TCP, HTTP o HTTPS. Per i controlli di integrità TCP, il Network Load Balancer verifica solo che la connessione possa essere stabilita.

  • Conservazione della connessione: i Network Load Balancer conservano l'indirizzo IP di origine del client, che può essere utile per scopi di sicurezza e registrazione.

  • Indirizzi IP statici: i Network Load Balancer forniscono indirizzi IP statici per ogni sottorete, che possono essere utili per la whitelist o quando i client devono connettersi a un indirizzo IP fisso.

  • Traffico di test: poiché i Network Load Balancer non supportano il routing basato sul contenuto, il traffico di test deve essere inviato a una porta diversa da quella di produzione.

Ascoltatori e regole

Per le blue/green implementazioni con un Network Load Balancer, è necessario configurare i listener:

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

    • Inizialmente inoltra il traffico al gruppo target principale (revisione blu del servizio)

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

  • Test listener (opzionale): 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 target alternativo (revisione del servizio verde) durante il test

A differenza degli Application Load Balancer, i Network Load Balancer non supportano regole di routing basate sul contenuto. Il traffico viene invece instradato in base alla porta e al protocollo del listener.

I seguenti comandi AWS CLI creano listener di produzione e test per un Network Load Balancer:

Sostituiscili user-input con i tuoi valori.

aws elbv2 create-listener \ --load-balancer-arn arn: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/1234567890123456 aws elbv2 create-listener \ --load-balancer-arn arn: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

Configurazione del servizio

Devi disporre delle autorizzazioni per consentire ad Amazon ECS di gestire le risorse di bilanciamento del carico nei tuoi cluster per tuo conto. Per ulteriori informazioni, consulta Ruolo IAM dell'infrastruttura Amazon ECS per i sistemi di bilanciamento del carico.

Quando crei o aggiorni un servizio Amazon ECS per le blue/green distribuzioni con un Network Load Balancer, devi specificare la seguente configurazione:

Sostituiscili con i tuoi valori. user-input

I componenti chiave di questa configurazione sono:

  • targetGroupArn: L'ARN del gruppo target principale (revisione del servizio blu)

  • alternateTargetGroupArn: L'ARN del gruppo target alternativo (revisione del servizio verde)

  • productionListenerArn: L'ARN del listener per il traffico di produzione

  • testListenerArn: (Facoltativo) L'ARN del listener per il traffico di test

  • roleArn: L'ARN del ruolo che consente ad Amazon ECS di gestire le risorse di Network Load Balancer

  • strategy: impostato per abilitare le distribuzioni BLUE_GREEN blue/green

  • bakeTimeInMinutes: La durata di attesa dopo l'implementazione della revisione del servizio verde prima di spostare il traffico di produzione

{ "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", "productionListenerArn": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456", "testListenerArn": "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 } }

Flusso di traffico durante l'implementazione

Durante un' blue/green implementazione con un Network Load Balancer, il traffico attraversa il sistema nel modo seguente:

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

  2. Implementazione della revisione dei servizi ecologici: Amazon ECS distribuisce le nuove attività e le registra con il gruppo target alternativo.

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

  4. Spostamento del traffico di produzione: Amazon ECS aggiorna il listener di produzione per indirizzare il traffico verso il gruppo target alternativo (revisione del servizio verde).

  5. Tempo di cottura: il periodo 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 blu del servizio viene terminata.

Se vengono rilevati problemi durante la distribuzione, Amazon ECS può eseguire automaticamente il rollback indirizzando il traffico verso il gruppo di destinazione principale (revisione blu del servizio).