Menu

Per questa pagina è stata utilizzata la traduzione automatica. Alcuni contenuti potrebbero non essere perfetti.

Condividi feedback

AWS ECS in profondità: architettura e opzioni di deployment

Sommario

Condivi questa pagina

Yifat Perry
Yifat Perry

Che cos'è AWS ECS?

Amazon Elastic Container Service (ECS) è un servizio di orchestrazione di container basato sul cloud e completamente gestito. Consente di eseguire le applicazioni nel cloud senza dover configurare e mantenere l'infrastruttura.

Per garantire che le richieste di capacità siano soddisfatte in modo ottimale e mantenere le massime performance, puoi impostare ECS per valutare e monitorare continuamente i processi di memoria e CPU. Questi dati possono aiutarti a determinare una strategia di deployment ottimale per ogni container. Inoltre, puoi sfruttare ECS per scalare i container e rilasciare aggiornamenti secondo necessità.

ECS supporta l'integrazione con diversi utili servizi e funzionalità AWS, inclusi i ruoli Identity and Access Management (AWS IAM), i volumi Elastic Block Store (AWS EBS) e AWS Elastic Load Balancing (AWS ELB).

Questo fa parte della nostra serie di articoli su Kuberneteson AWS.

In questo articolo imparerai:

Vantaggi e casi d'uso di ECS

ECS consente di sfruttare facilmente i container per vari casi d'uso. Puoi sfruttare ECS per ospitare semplici siti Web e gestire un'architettura di microservizi distribuita. ECS semplifica la gestione dei container, ma non automatizza l'intero processo. Puoi comunque mettere a punto e personalizzare il processo.

Ecco alcuni vantaggi chiave di Amazon ECS:

  • Implementazione facile e semplice—ECS elimina la necessità di configurare e gestire l'infrastruttura dei cluster ofKubernetes assumendosi la responsabilità di questi compiti.
  • Funzionalità di pianificazione—che ti consentono di pianificare servizi, applicazioni e processi batch.
  • Disponibilità gestita—ECS è responsabile del mantenimento della disponibilità delle applicazioni e ti aiuta a scalare in verticale o in orizzontale in base alle necessità per garantire che le richieste di capacità siano soddisfatte.
  • Integrazione nativa, con un'ampia gamma di funzionalità come AWS ELB, Amazon Virtual Private Cloud (Amazon VPC), IAM e AWS EBS.
  • Integrazione con gli strumenti esistenti—ECS fornisce semplici API che ti consentono di integrarti con la tua pipeline CI/CD e i tuoi strumenti esistenti.

Scopri di più nelle nostre guide: AWS ECS vsKubernetes e AWS ECS vsEKS

Architettura Amazon ECS

La figura seguente illustra Amazon ECS con container in esecuzione su AWS Fargate. Nelle sezioni seguenti discuteremo i componenti principali mostrati.

Amazon ECS architecture with VPC, container registry, Fargate tasks, and elastic network interfaces across availability zones.Fonte: AWS

Container e immagini

Per distribuire la tua applicazione su Amazon ECS, devi progettare i componenti dell'applicazione per l'esecuzione in container. I container vengono creati da modelli di sola lettura chiamati immagini.

Le immagini vengono di solito create da un Dockerfile, un file di testo normale che specifica tutti i componenti che devono essere eseguiti nel container. Una volta create, queste immagini vengono archiviate in un registro container e possono essere scaricate ed eseguite nel cluster.

Definizioni delle task AWS ECS

Per preparare la tua applicazione per l'esecuzione su Amazon ECS, è necessario creare una definizione di attività. Una definizione di attività è un file di testo (in formato JSON) che descrive uno o più container (fino a 10) che costituiscono la tua applicazione.

La definizione del processo può specificare vari parametri per la tua applicazione in container. Ad esempio, puoi utilizzare questi parametri per indicare quali container eseguire, quali porte devono essere aperte, quali volumi di dati devono essere utilizzati, quale modalità di rete Docker utilizzare e i ruoli di Identity and Access Management (IAM).

Quasi tutto ciò che puoi eseguire in un comando Docker a riga di comando può essere definito utilizzando le definizioni di attività ECS. Consulta tutti i parametri delle definizioni di attività nella documentazione ufficiale.

Attività e pianificazione AWS ECS

Un'attività è un'istanza di una definizione di attività in esecuzione in un cluster. Dopo aver creato una definizione di attività per la tua applicazione in Amazon ECS, puoi specificare il numero di attività da eseguire sul tuo cluster.

Amazon ECS Task Scheduler è responsabile del posizionamento delle attività in un cluster. Esistono due strategie principali per l'utilità di pianificazione:

  • La strategia REPLICA inserisce un numero desiderato di attività nel tuo cluster e mantiene questo numero di attività, ripristinandole se alcune di esse falliscono.
  • La strategia DAEMON posiziona un task su ogni istanza di container attiva che soddisfa i relevantcriteria.

Amazon ECS architecture showing service definition and Fargate tasks with elastic network interfaces.Fonte: AWS

Cluster AWS ECS

Un cluster Amazon ECS è un raggruppamento logico di servizi, ciascuno composto da uno o più task. La prima volta che utilizzi Amazon ECS, viene creato un cluster predefinito. Puoi creare cluster aggiuntivi nel tuo account per ottenere l'isolamento delle risorse per carichi di lavoro o progetti diversi.

Esistono due modi per eseguire le risorse cluster—su istanze EC2 o tramite Amazon Fargate. Per ulteriori dettagli sul funzionamento di ciascuna di queste opzioni, vedere la sezione seguente.

Agente container

L'agente di container viene eseguito su ogni istanza di container in un cluster Amazon ECS. L'agente invia informazioni sulle attività attualmente in esecuzione e sull'utilizzo delle risorse ad Amazon ECS. Amazon ECS può utilizzare l'agente per avviare e arrestare attività secondo necessità.

Amazon ECS workflow diagram illustrating container registry integration and task scheduling.Fonte: AWS

Opzioni di deployment di AWS ECS: EC2 vs Fargate

ECS può utilizzare le istanze Elastic Compute Cloud (EC2) per eseguire container. Le istanze EC2 sono distribuite come parte del servizio Amazon EC2 e "registrate" in un cluster ECS definito, il che significa che EC2 può utilizzare tali istanze per distribuire container. Puoi eseguire un cluster ECS all'interno di un VPC esistente, rendendolo accessibile alle risorse AWS esistenti in esecuzione in quel VPC.

Un modo alternativo per distribuire i container ECS è con Amazon Fargate. Fargate rimuove la responsabilità per il provisioning, la configurazione e la gestione delle istanze EC2, consentendo ad AWS di gestire le istanze EC2 per te.

Con Fargate non è necessario gestire i server, ma è necessario assicurarsi che le definizioni delle attività siano stateless. Attualmente, non è possibile collegare un volume di storage (come un volume Elastic Block Storage) al container definito nel job.

Ciò significa che se utilizzi Fargate con storage persistente, dovrai utilizzare servizi di storage esterni come S3 o Relational Data Service (RDS).

Utilizza ECS con EC2 quando:

  • L'intera infrastruttura viene eseguita in AWS
  • Hai già definito VPC e subnet
  • Disponi di processi esistenti per il provisioning e la gestione delle istanze EC2
  • Le applicazioni richiedono storage persistente collegato direttamente

Utilizza ECS Fargate quando:

  • Non hai un VPC esistente
  • Hai alcune risorse in esecuzione su Amazon e alcune su altri ambienti cloud
  • Le applicazioni sono stateless o non richiedono volumi di storage direttamente collegati

Domande e risposte AWS ECS

In che modo Amazon ECS è diverso da AWS Elastic Beanstalk?

EC2 ti offre funzionalità che semplificano la gestione dei container, mentre continui a mettere a punto il processo. AWS Elastic Beanstalk, invece, gestisce automaticamente l'infrastruttura per te. Puoi utilizzare Beanstalk nei casi in cui devi concentrarti solo sul codice.

AWS Elastic Beanstalk è un servizio basato sul cloud che ti aiuta a distribuire e ridimensionare facilmente applicazioni e servizi. Beanstalk gestisce automaticamente servizi come ELB, EC2, Auto Scaling, RDS e Auto Scaling, distribuisce applicazioni e monitora lo stato di salute dell'applicazione.

Quando si lavora con Beanstalk, è necessario specificare le immagini dei container che si desidera che il servizio distribuisca, nonché i requisiti di memoria e CPU, i collegamenti dei container e le mappature delle porte. Una volta definite queste informazioni, Beanstalk inizia a gestire automaticamente tutta la gestione. Esegue il provisioning del cluster ECS, gestisce il dimensionamento automatico e il monitoraggio, esegue il bilanciamento del carico e distribuisce i container nei cluster.

In che modo Amazon ECS è diverso da AWS Lambda?

Amazon ECS offre funzionalità che semplificano la gestione di container e cluster ma non automatizzano completamente il processo. È necessario comprendere come funziona il processo di provisioning e configurare e scalare continuamente le proprie risorse. EC2 espone server e fornisce le informazioni necessarie per scalare e ottimizzare l'ambiente.

AWS Lambda consente di codificare attività basate su eventi che automatizzano l'infrastruttura di calcolo. Lambda consente di definire un'infrastruttura serverless che non richiede né consente il tuo intervento, a parte la scrittura del codice che attiva gli eventi. Lambda consente di configurare eventi come modifiche ai dati o clic su siti web e definire una reazione in risposta agli eventi.

Ottimizzazione dello storage dei container con Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, la soluzione leader nella gestione dello storage enterprise, offre servizi di gestione dello storage sicuri e comprovati su AWS, Azure e Google Cloud. Cloud Volumes ONTAP supporta una capacità massima di 368TB e supporta vari casi d'uso come file services, database, DevOps o qualsiasi altro carico di lavoro enterprise, con un solido set di funzionalità tra cui high availability, data protection, storage efficiencies, integrazione con Kubernetes e altro ancora.

In particolare, Cloud Volumes ONTAP supporta il provisioning e la gestione dei volumi persistenti richiesti dai carichi di lavoro containerizzati.

Scopri di più su come Cloud Volumes ONTAP aiuta ad affrontare le sfide delle applicazioni containerizzate in queste KubernetesWorkloads con Cloud Volumes ONTAP Case Studies.

Drift chat loading