Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Aumentare i task ECS per host

By Paul O'BrienAug 29, 20243 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Riscontra difficoltà nell'eseguire più di pochi task per host ECS? Continui a leggere: le mostriamo una soluzione semplice per aumentare drasticamente il numero di task ECS che può eseguire.

Contesto

La configurazione predefinita di ECS su EC2 limita il numero di task ECS eseguibili su ciascun nodo. Il limite preciso dipende dal tipo di istanza utilizzato. Questa restrizione esiste perché ogni task richiede l'assegnazione di una Elastic Network Interface (ENI), il che vincola il numero massimo di task per istanza.

L'ENI trunking arriva in soccorso!

L'ENI trunking (con l'impostazione account awsvpcTrunking) consente a un host di eseguire molti più task. L'ENI primaria viene utilizzata per la comunicazione dell'host, mentre per il trunking vengono assegnate ENI aggiuntive, collegate come branch interface, fino al numero massimo previsto per quel tipo di istanza.

Prendiamo un tipo di nodo piuttosto diffuso: r5.xlarge. Per impostazione predefinita supporta tre task, ma con l'ENI trunking abilitato il numero sale a 20 (tabella di riferimento del numero massimo di task per tipo di istanza).

Abilitare il trunking su un cluster esistente

Abilitare il trunking in fase di creazione di un cluster ECS è semplice, ma come procedere se il cluster esiste già?

Per prima cosa, verifichi se il trunking è attivo con il comando seguente. Può eseguirlo in CloudShell o in una CLI configurata correttamente:

aws ecs list-attributes --target-type container-instance --attribute-name ecs.awsvpc-trunk-id --cluster <Cluster Name> --region <Region>

Se la lista di attributi restituita è vuota, sul cluster specificato il trunking non è abilitato.

Considerazioni sul trunking

Prima di abilitare il trunking conviene consultare la documentazione AWS, che ne descrive i limiti.

Gli aspetti più rilevanti dell'ENI trunking sono:

  1. È supportata solo la modalità di rete awsvpc.
  2. Il launch type deve essere EC2 (Fargate non necessita di questa funzionalità: per impostazione predefinita viene fornita un'ENI dedicata per ciascun task).
  3. Le reti condivise non sono supportate.
  4. I container Windows non sono supportati.
  5. Deve esistere il service linked role (creato per impostazione predefinita all'atto della creazione del cluster ECS).
  6. Le richieste DNS IPV4 basate su risorse (A record) non devono essere abilitate (impostazione predefinita alla creazione delle istanze EC2).

Abilitiamo il trunking

Se utilizza la AWS Web Console per abilitare il trunking su un cluster esistente, l'interfaccia indicherà che è attivo, ma è probabile che il comando aws ecs list-attributes restituisca un array di attributi vuoto: segno che, in realtà, non lo è.

La AWS Console indica, forse erroneamente, che il trunking è abilitato

In tal caso, può abilitare il trunking per tutti i cluster dell'account eseguendo il comando seguente:

aws ecs put-account-setting-default --name awsvpcTrunking --value enabled --region <Region>

Con questo metodo è sufficiente configurare l'impostazione predefinita una sola volta per regione per un determinato account, poiché il comando agisce sulla proprietà default account setting relativa al trunking.

Le nuove istanze ECS recepiranno automaticamente la modifica; in alternativa può riavviare le istanze già in esecuzione. Se utilizza un autoscaling group, aumenti il numero di istanze attive e ricicli i nodi per applicare la modifica senza interruzioni di servizio.

Può verificare il corretto funzionamento del trunking controllando il numero di task per host oppure rieseguendo il comando aws ecs list-attributes: ora dovrebbe restituire l'elenco delle interfacce abilitate al trunking anziché un array vuoto.

Se non conosce ancora DoiT, le consigliamo vivamente di scoprirci. Il nostro team è pronto ad approfondire le sue esigenze di cloud engineering. Composto esclusivamente da Engineers senior, siamo specializzati in consulenza cloud avanzata, progettazione architetturale e supporto al debugging. Ci contatti, parliamone!