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à.
Creazione di una distribuzione Amazon ECS blue/green
Utilizzando le blue/green distribuzioni di Amazon ECS, puoi apportare e testare modifiche ai servizi prima di implementarle in un ambiente di produzione.
Prerequisiti
Esegui le seguenti operazioni prima di iniziare una distribuzione. blue/green
-
Configura le autorizzazioni appropriate.
-
Per informazioni sulle autorizzazioni Elastic Load Balancing, vedere. Ruolo IAM dell'infrastruttura Amazon ECS per i sistemi di bilanciamento del carico
-
Per informazioni sulle autorizzazioni Lambda, vedere Autorizzazioni richieste per le funzioni Lambda nelle distribuzioni Amazon ECS blue/green
-
-
blue/green Le implementazioni di Amazon ECS richiedono che il servizio utilizzi una delle seguenti funzionalità: Configura le risorse appropriate.
-
Application Load Balancer: per ulteriori informazioni, vedere. Risorse Application Load Balancer per le implementazioni blue/green
-
Network Load Balancer: per ulteriori informazioni, vedere. Risorse Network Load Balancer per le implementazioni blu/verdi di Amazon ECS
-
Service Connect: per ulteriori informazioni, vedereRisorse Service Connect per le implementazioni blu/green di Amazon ECS.
-
-
Crea una regola per indirizzare il traffico verso la revisione del tuo servizio ecologico. Per ulteriori informazioni, consulta le regole del listener nella Guida per l'utente di Network Load Balancer.
-
Crea un gruppo target per la revisione del tuo servizio ecologico. Quando utilizzi la modalità di
awsvpc
rete per le tue attività, il tipo di destinazione deve essereip
. Per informazioni sui gruppi target, consulta Target groups nella Network Load Balancer User Guide. -
Decidi se vuoi eseguire le funzioni Lambda per gli eventi del ciclo di vita.
-
Pre-scalabilità
-
Dopo la scalabilità
-
Prova lo spostamento del traffico
-
Dopo il test di cambio di traffico
-
Spostamento del traffico di produzione
-
Dopo lo spostamento del traffico di produzione
Crea funzioni Lambda per ogni evento del ciclo di vita. Per ulteriori informazioni, consulta Creare una funzione Lambda con la console nella Guida per gli AWS Lambda sviluppatori.
-
Procedura
Puoi utilizzare la console o AWS CLI creare un blue/green servizio Amazon ECS.
- Console
-
Apri la console nella versione 2https://console.aws.amazon.com/ecs/.
-
Determina la risorsa da cui avviare il servizio.
Per avviare un servizio da Fasi Cluster
-
Nella pagina Cluster, seleziona il cluster in cui creare il servizio.
Viene visualizzata la pagina dei dettagli del cluster.
-
Nella scheda Servizi, scegli Crea.
Definizione di attività -
Nella pagina Definizioni delle attività, selezionare la definizione dell'attività.
-
Dal menu Distribuisci, scegli Crea servizio.
Viene visualizzata la pagina Crea servizio.
-
-
In Dettagli del servizio, procedi come segue:
-
Per Famiglia di definizioni di attività, scegli la definizione di attività da utilizzare. Quindi, per Revisione della definizione dell'attività, inserisci la revisione da utilizzare.
-
In Service name (Nome servizio), specifica un nome per il servizio.
-
-
Per eseguire il servizio in un cluster esistente, per Cluster esistente, scegli il cluster. Per eseguire il servizio in un nuovo cluster, scegli Crea cluster
-
Scegli in che modo le tue attività sono distribuite nell'infrastruttura del cluster. In Configurazione di elaborazione, scegli la tua opzione.
Opzione di calcolo Fasi Strategia del provider di capacità
-
In Opzioni di calcolo, scegli Strategia del provider di capacità.
-
Scegli una strategia:
-
Per utilizzare una strategia del provider di capacità predefinita del cluster, scegli Use cluster default (Usa impostazione predefinita del cluster.
-
Se il cluster non dispone di una strategia del provider di capacità predefinita o per utilizzare una strategia personalizzata, scegli Usa personalizzato, Aggiungi strategia del provider di capacità e definisci la strategia personalizzata specificando Base, Provider di capacità e Peso.
-
Nota
Per utilizzare un provider di capacità in una strategia, il provider di capacità deve essere associato al cluster.
Tipo di avvio -
Nella sezione Compute option (Opzioni di calcolo), seleziona Launch type (Tipo di avvio).
-
Per Launch type (Tipo di avvio), seleziona un tipo di avvio.
-
(Facoltativo) Quando viene specificato il tipo di avvio Fargate, per Versione piattaforma specifica la versione della piattaforma da utilizzare. Se non è specificata, di default viene utilizzata la versione della piattaforma
LATEST
.
-
-
In Configurazione di distribuzione, procedi come segue:
-
Per Tipo di servizio, scegli Replica.
-
Per Desired tasks (Attività desiderate), immetti il numero di attività da avviare e gestire nel servizio.
-
Per fare in modo che Amazon ECS monitori la distribuzione delle attività tra le zone di disponibilità e le ridistribuisca in caso di squilibrio, in Availability Zone service rebilancing seleziona Availability Zone service rebalancing.
-
Per il periodo di tolleranza del controllo dell'integrità, inserisci il periodo di tempo (in secondi) in cui lo scheduler del servizio ignora i controlli non integri di Elastic Load Balancing, VPC Lattice e dello stato dei container dopo il primo avvio di un'attività. Se non si specifica un valore del periodo di tolleranza per il controllo dello stato di salute, viene utilizzato il valore predefinito 0.
-
-
-
Per Tempo di cottura, inserisci il numero di minuti in cui entrambe le revisioni del servizio blu e verde verranno eseguite contemporaneamente prima che la revisione blu venga interrotta. Ciò consente di avere tempo per la verifica e il test.
-
(Facoltativo) Esegui le funzioni Lambda da eseguire in fasi specifiche della distribuzione. In Deployment lifecycle hooks, seleziona le fasi per eseguire i lifecycle hook.
Per aggiungere un lifecycle hook:
-
Scegli Aggiungi.
-
Per la funzione Lambda, immettere il nome della funzione o l'ARN.
-
Per Ruolo, seleziona il ruolo IAM autorizzato a richiamare la funzione Lambda.
-
Per le fasi del ciclo di vita, seleziona le fasi in cui deve essere eseguita la funzione Lambda.
-
-
-
Per configurare il modo in cui Amazon ECS rileva e gestisce gli errori di implementazione, espandi Deployment failure detection (Rilevamento degli errori di implementazione), quindi scegli le tue opzioni.
-
Per interrompere un'implementazione quando le attività non possono essere avviate, seleziona Use the Amazon ECS deployment circuit breaker (Usa l'interruttore automatico di implementazione di Amazon ECS).
Per fare in modo che il software ripristini automaticamente la distribuzione all'ultimo stato di distribuzione completato quando l'interruttore di distribuzione imposta la distribuzione su uno stato fallito, seleziona Rollback in caso di errori.
-
Per interrompere una distribuzione in base alle metriche dell'applicazione, seleziona Usa CloudWatch allarmi. Quindi, dal nome CloudWatch dell'allarme, scegli gli allarmi. Per creare un nuovo allarme, vai alla CloudWatch console.
Per fare in modo che il software ripristini automaticamente la distribuzione all'ultimo stato di distribuzione completato quando un CloudWatch allarme imposta la distribuzione su uno stato fallito, seleziona Rollback in caso di errori.
-
-
(Facoltativo) Per interconnettere il servizio tramite Service Connect, espandi Service Connect, quindi specifica quanto segue:
-
Seleziona Attiva Service Connect.
-
In Service Connect configuration (Configurazione Service Connect), specifica la modalità client.
-
Se il tuo servizio esegue un'applicazione client di rete che deve solo connettersi ad altri servizi nel namespace, scegli Solo lato client.
-
Se il servizio esegue un'applicazione di rete o di servizio Web, deve fornire endpoint per questo servizio e si connette ad altri servizi nello spazio dei nomi, scegli Client and server (Client e server).
-
-
Per utilizzare uno spazio dei nomi differente da quello del cluster predefinito, per Namespace (Spazio dei nomi), scegli lo spazio dei nomi del servizio.
-
(Facoltativo) Configura le regole dell'intestazione del traffico di test per le distribuzioni. blue/green In Test del routing del traffico, specifica quanto segue:
-
Seleziona Abilita le regole di intestazione del traffico di test per indirizzare richieste specifiche alla revisione del servizio verde durante il test.
-
Per le regole di Header matching, configura i criteri per il routing del traffico di test:
-
Nome dell'intestazione: inserisci il nome dell'intestazione HTTP da abbinare (ad esempio, o).
X-Test-Version
User-Agent
-
Tipo di corrispondenza: scegli i criteri di corrispondenza:
-
Corrispondenza esatta: indirizza le richieste in cui il valore dell'intestazione corrisponde esattamente al valore specificato
-
Intestazione presente: indirizza le richieste che contengono l'intestazione specificata, indipendentemente dal valore
-
Pattern match: indirizza le richieste in cui il valore dell'intestazione corrisponde a uno schema specificato
-
-
Valore dell'intestazione (se si utilizza la corrispondenza esatta o la corrispondenza del modello): inserisci il valore o lo schema con cui eseguire la corrispondenza.
Puoi aggiungere più regole di header matching per creare una logica di routing complessa. Le richieste che corrispondono a una qualsiasi delle regole configurate verranno indirizzate alla revisione del servizio verde per essere testate.
-
-
Scegli Aggiungi regola di intestazione per configurare condizioni aggiuntive di corrispondenza dell'intestazione.
Nota
Le regole dell'intestazione del traffico di test consentono di convalidare nuove funzionalità con traffico controllato prima di completare l'implementazione completa. Ciò consente di testare la revisione verde del servizio con richieste specifiche (ad esempio quelle provenienti da strumenti di test interni o utenti beta) mantenendo al contempo il normale flusso di traffico verso la revisione blu del servizio.
-
-
(Facoltativo) Specificate una configurazione del registro. Seleziona Usa la raccolta dei registri. L'opzione predefinita invia i log dei contenitori a CloudWatch Logs. Le altre opzioni del driver di registro sono configurate utilizzando. AWS FireLens Per ulteriori informazioni, consulta Inviare i log di Amazon ECS a un servizio o AWSAWS Partner.
Di seguito sono riportate descrizioni più dettagliate per ogni destinazione di log di container.
-
Amazon CloudWatch: configura l'attività per inviare i log dei container a CloudWatch Logs. Vengono fornite le opzioni predefinite dei driver di registro, che creano un gruppo di CloudWatch log per tuo conto. Per specificare un nome del gruppo di log diverso, modifica i valori dell'opzione del driver.
-
Amazon Data Firehose: configura l'attività per inviare i log dei container a Firehose. Sono disponibili le opzioni predefinite del driver di registro, che inviano i log a un flusso di distribuzione Firehose. Per specificare un nome del flusso di consegna diverso, modifica i valori dell'opzione del driver.
-
Amazon Kinesis Data Streams: configura l'attività per inviare i log dei container a Kinesis Data Streams. Vengono fornite le opzioni predefinite del driver di registro, che inviano i log a un flusso Kinesis Data Streams. Per specificare un nome del flusso diverso, modifica i valori dell'opzione del driver.
-
Amazon OpenSearch Service: configura l'attività per inviare i log dei container a un dominio OpenSearch di servizio. Devono essere fornite le opzioni del driver di log.
-
Amazon S3: configura l'attività per inviare i log dei container a un bucket Amazon S3. Vengono fornite le opzioni di driver di registro predefinite, ma è necessario specificare un nome di bucket Amazon S3 valido.
-
-
-
(Facoltativo) Configura il bilanciamento del carico per la distribuzione blu/verde.
Tipo Elastic Load Balancing Fasi Application Load Balancer
-
Per il tipo di Load balancer, scegli Application Load Balancer.
-
Scegli Creazione di un nuovo load balancer per creare un nuovo servizio di Application Load Balancer o Utilizzo di un load balancer esistente per selezionare un Application Load Balancer esistente.
-
Per Container, scegli il contenitore che ospita il servizio.
-
Per Load balancer name (Nome load balancer), immetti un nome univoco.
-
Per Listener, specifica una porta e un protocollo per l'Application Load Balancer su cui ascoltare le richieste di connessione. Di default, il load balancer sarà configurato per utilizzare la porta 80 e HTTP.
-
Per la regola di produzione, inserisci l'ordine di valutazione e il modello di percorso per la regola.
Questa regola riguarda il traffico di revisione del servizio di produzione (blu).
-
Per Regola di test, inserisci l'ordine di valutazione e il modello di percorso per la regola.
Questa regola riguarda il traffico di revisione del servizio di test (verde).
-
-
Per Target group, configura quanto segue:
-
Per Target group name (Nome del gruppo di destinazione), specifica un nome e un protocollo per il gruppo di destinazione a cui l'Application Load Balancer instraderà le richieste.
-
Per Protocollo, scegliete il protocollo per il gruppo target a cui l'Application Load Balancer indirizza le richieste. Per impostazione predefinita, il gruppo di destinazione instraderà le richieste al primo container definito nella definizione di attività.
-
Per Degregistration delay, inserite il numero di secondi in cui il load balancer modificherà lo stato di destinazione.
UNUSED
Il valore predefinito è 300 secondi. -
Per Health check path (Percorso del controllo dell'integrità), specifica un percorso esistente all'interno del container in cui l'Application Load Balancer deve inviare periodicamente le richieste per verificare l'integrità della connessione tra l'Application Load Balancer e il container. L'opzione predefinita è la directory root (
/
). -
Per Nome gruppo alternativo, inserisci il nome del gruppo target per la revisione del servizio di test (verde).
-
Network Load Balancer -
Per Load balancer type (Tipo di load balancer), scegli Network Load Balancer.
-
Per Load Balancer, scegli un Network Load Balancer esistente.
-
Per Choose container to load balance (Scegli il container per il bilanciamento del carico), scegli il container che ospita il servizio.
-
Per Production listener, scegli la porta Production listener e il protocollo Production listener.
Questo è il listener per il traffico di revisione del servizio di produzione (blu).
-
Per Test listener, scegli la porta Test listener e il protocollo Test listener.
Questo è il listener per il traffico di revisione del servizio di test (verde).
-
Per Target group, configura quanto segue:
-
Per Target group name (Nome del gruppo di destinazione), specifica un nome e un protocollo per il gruppo di destinazione a cui il Network Load Balancer instraderà le richieste.
-
Per Protocollo, scegli il protocollo per il gruppo target a cui il Network Load Balancer indirizza le richieste. Per impostazione predefinita, il gruppo di destinazione instraderà le richieste al primo container definito nella definizione di attività.
-
Per Degregistration delay, inserite il numero di secondi in cui il load balancer modificherà lo stato di destinazione.
UNUSED
Il valore predefinito è 300 secondi. -
Per Health check path (Percorso del controllo dell'integrità), specifica un percorso esistente all'interno del container in cui l'Application Load Balancer deve inviare periodicamente le richieste per verificare l'integrità della connessione tra l'Application Load Balancer e il container. L'opzione predefinita è la directory root (
/
). -
Per Nome gruppo alternativo, inserisci il nome del gruppo target per la revisione del servizio di test (verde).
-
-
-
(Facoltativo) Per identificare il servizio e le attività, espandi la sezione Tags (Tag), quindi configura i tag.
Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag di definizione delle attività, seleziona Attiva i tag gestiti di Amazon ECS, quindi in Propaga i tag da, scegli Definizioni di attività.
Per fare in modo che Amazon ECS contrassegni automaticamente tutte le attività appena avviate con il nome del cluster e i tag del servizio, seleziona Attiva i tag gestiti di Amazon ECS, quindi in Propaga i tag da, scegli Servizio.
Aggiungi o rimuovi un tag.
-
[Aggiungi un tag] Scegli Add tag (Aggiungi tag), quindi effettuare le seguenti operazioni:
-
In Chiave, immetti il nome della chiave.
-
In Valore, immetti il valore della chiave.
-
-
[Rimuovere un tag] Accanto al tag, scegliere Remove tag (Rimuovi tag).
-
-
Scegli Create (Crea).
- AWS CLI
-
-
Creare un archivio denominato
service-definition.json
con i seguenti contenuti.Sostituiscili
user-input
con i tuoi valori.{ "serviceName": "
myBlueGreenService
", "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster
", "taskDefinition": "sample-fargate:1
", "desiredCount": 5, "launchType": "FARGATE", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-09ce6e74c116a2299
", "subnet-00bb3bd7a73526788
", "subnet-0048a611aaec65477
" ], "securityGroups": [ "sg-09d45005497daa123
" ], "assignPublicIp": "ENABLED" } }, "deploymentController": { "type": "ECS" }, "deploymentConfiguration": { "strategy": "BLUE_GREEN", "maximumPercent": 200, "minimumHealthyPercent": 100, "bakeTimeInMinutes": 2, "alarms": { "alarmNames": [ "myAlarm" ], "rollback": true, "enable": true }, "lifecycleHooks": [ { "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample
", "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke
", "lifecycleStages": [ "PRE_SCALE_UP" ] } ] }, "loadBalancers": [ { "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197
", "containerName": "fargate-app
", "containerPort": 80, "advancedConfiguration": { "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199
", "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911
", "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS
" } } ] } -
Esegui
create-service
.user-input
Sostituiscili con i tuoi valori.aws ecs create-service --cli-input-json file://service-definition.json
In alternativa, puoi utilizzare il seguente esempio che crea un servizio di blue/green distribuzione con una configurazione di bilanciamento del carico:
aws ecs create-service \ --cluster "
arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster
" \ --service-name "blue-green-example-service" \ --task-definition "nginxServer:1" \ --launch-type "FARGATE" \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12345
,subnet-67890
,subnet-abcdef
,subnet-fedcba
],securityGroups=[sg-12345
],assignPublicIp=ENABLED}" \ --desired-count 3 \ --deployment-controller "type=ECS" \ --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \ --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890
,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012
:targetgroup/MyBGtg2/0987654321fedcba
,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef
,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole
}"
-
Passaggi successivi
Aggiorna il servizio per avviare la distribuzione. Per ulteriori informazioni, consulta Aggiornamento di un servizio Amazon ECS.
-
Monitora il processo di distribuzione per assicurarti che segua lo blue/green schema:
-
La revisione del servizio verde viene creata e ampliata
-
Il traffico di test viene indirizzato alla revisione verde (se configurata)
-
Il traffico di produzione viene spostato sulla revisione verde
-
Dopo il tempo di cottura, la revisione blu viene interrotta
-