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

Per utilizzare un Network Load Balancer con blue/green distribuzioni Amazon ECS, devi configurare risorse specifiche che consentano l'instradamento 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 instradamento del traffico nel piano dati.

Gruppi di destinazione

Per le blue/green implementazioni con un Network Load Balancer, è 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 revisione del servizio)

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: 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 attività di Amazon ECS

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

    Per i controlli dell'integrità 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 di destinazione 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 attività di Amazon ECS

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

A differenza degli Application Load Balancer, i Network Load Balancer operano a livello di trasporto (Livello 4) e non utilizzano gruppi di sicurezza. Invece, è necessario assicurarsi che i gruppi di sicurezza associati alle attività di Amazon ECS consentano il traffico 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 di livello 4: i Network Load Balancer operano a livello di trasporto (livello 4) e non ispezionano il contenuto a livello di applicazione (livello 7). Ciò significa che non è possibile utilizzare intestazioni o percorsi HTTP per le decisioni di instradamento.

  • Controlli dell'integrità: i controlli dell'integrità di Network Load Balancer sono limitati ai protocolli TCP, HTTP o HTTPS. Per i controlli dell'integrità di 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 creazione di whitelist o quando i client devono connettersi a un indirizzo IP fisso.

  • Traffico di test: poiché i Network Load Balancer non supportano l'instradamento basato sul contenuto, il traffico di test deve essere inviato a una porta diversa rispetto al traffico di produzione.

Listener 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 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 (obbligatorio): 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 es., 8080 o 8443)

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

A differenza degli Application Load Balancer, i Network Load Balancer non supportano regole di instradamento 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

È 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 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 di destinazione principale (revisione del servizio blu)

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

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

  • testListenerRule: (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 BLUE_GREEN abilitare le blue/green distribuzioni

  • bakeTimeInMinutes: la durata dell'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", "productionListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456", "testListenerRule": "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 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 il 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).