Qual è la differenza tra Amazon ECS e Amazon EC2?


127

Ho appena iniziato a utilizzare AWS EC2. Capisco che EC2 è come un computer remoto in cui posso fare praticamente tutto ciò che voglio. Poi ho scoperto ECS. So che utilizza Docker, ma sono confuso sulla relazione tra questi due.

ECS è solo un'installazione Docker in EC2? Se ho già un EC2 e avvio un ECS, significa che ho due istanze?

Risposte:


169

La tua domanda

ECS è solo un'installazione docker in EC2? Se ho già un EC2, allora avvio un ECS, significa che ho due istanze?

No. AWS ECSè solo un raggruppamento logico (cluster) di EC2istanze, e tutta la EC2parte istanze di un ECSatto come Dockerospite cioè ECS può inviare comandi per lanciare un contenitore sopra ( EC2). Se hai già un EC2 e poi avvii ECS, avrai comunque una singola istanza. Se aggiungi / registri (installando AWS ECS Container Agent) l'EC2 in ECS diventerà la parte del cluster, ma sempre una singola istanza di EC2.

Un Amazon ECS senza EC2 registrato (aggiunto al cluster) non serve a niente.


TL; DR

Una panoramica

  • EC2 - è semplicemente una macchina remota (virtuale).
  • ECSsta per Elastic Container Service- secondo la definizione di base di cluster di computer , ECSè fondamentalmente un raggruppamento logico di EC2macchine / istanze . Tecnicamente parlando ECSè una semplice configurazione per un uso e una gestione efficiente delle risorse delle tue EC2 istanze, ad esempio archiviazione, memoria, CPU, ecc.

Per semplificarlo ulteriormente, se hai avviato un Amazon ECSsenza EC2istanze aggiunte, non serve a nulla, ovvero non puoi fare nulla al riguardo. ECSha senso solo una volta EC2aggiunte una (o più) istanze.

La prossima cosa confusa qui è il termine contenitore , che non è istanze di macchina completamente virtualizzate e Docker è una tecnologia che possiamo utilizzare per creare istanze di contenitore. Dockerè un'utilità che puoi installare sulla nostra macchina, che la rende un Dockerhost, e su questo host puoi creare contenitori (come le macchine virtuali - ma molto più leggeri). Per riassumere, si ECStratta solo di clustering di istanze EC2 e utilizza Dockerper istanziare contenitori / istanze / macchine virtuali su questi EC2host ( ) .

Tutto quello che devi fare è avviare un ECSe registrarti / aggiungervi tutte le EC2istanze di cui hai bisogno. Puoi aggiungere / registrare istanze EC2, tutto ciò di cui hai bisogno è Amazon ECS Container Agent in esecuzione sulla tua istanza / macchina EC2, che può essere eseguita manualmente o direttamente utilizzando l'AMI speciale (Amazon Machine Image), ovvero l'AMI ottimizzata per Amazon ECS, che ha già l'agente del contenitore di Amazon ECS. Durante l'avvio di una nuova istanza EC2, l'agente la registra automaticamente nel cluster ECS predefinito.

L' agente del contenitore in esecuzione su ciascuna delle istanze ( EC2istanze) all'interno di un Amazon ECScluster invia informazioni sulle attività in esecuzione e sull'utilizzo delle risorse dell'istanza ad Amazon ECS e avvia e arresta le attività ogni volta che riceve una richiesta da Amazon ECS. Per ulteriori informazioni, consulta Amazon ECS Container Agent . Una volta impostata, ciascuna delle istanze di container create (di qualunque EC2macchina / nodo) sarà un'istanza nello Amazon ECSsciame di.


Per ulteriori informazioni, leggi il passaggio 10 di questa documentazione: Avvio di un'istanza di container Amazon ECS :

Scegli un'AMI per la tua istanza di container. Puoi scegliere l'AMI ottimizzata per Amazon ECS o un altro sistema operativo, come CoreOS o Ubuntu. Se non scegli l'AMI ottimizzata per Amazon ECS, devi seguire le procedure in Installazione dell'agente container Amazon ECS .

Per impostazione predefinita, l'istanza del contenitore viene avviata nel cluster predefinito. Se desideri avviare il tuo cluster invece di quello predefinito, scegli l'elenco Advanced Details e incolla il seguente script nel campo User data, sostituendo your_cluster_name con il nome del tuo cluster.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

Oppure, se disponi di un file ecs.config in Amazon S3 e hai abilitato l'accesso di sola lettura Amazon S3 al ruolo dell'istanza del contenitore, scegli l'elenco Dettagli avanzati e incolla il seguente script nel campo Dati utente, sostituendo your_bucket_name con il nome di il bucket per installare AWS CLI e scrivere il file di configurazione al momento del lancio. Nota Per ulteriori informazioni su questa configurazione, consulta Archiviazione della configurazione dell'istanza di container in Amazon S3.

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

Giusto per chiarire ulteriormente, puoi creare contenitori sulla tua singola EC2istanza senza ECS. Installa qualsiasi tecnologia di containerizzazione, ad esempio Dockered esegui il comando create container, impostando il tuo EC2come Dockerhost e disponi di tutti i Dockercontenitori che desideri (o quanto le tue EC2risorse lo consentono).


8
ECS non sta per Elastic Container Service?
lfk

1
Va notato che questa risposta è ora sostanzialmente obsoleta con il lancio di AWS Fargate all'inizio del 2018 (che esegue ECS): aws.amazon.com/fargate
bsplosion

77

In parole semplici, ECS è un manager mentre le istanze EC2 sono proprio come i dipendenti. Tutti i dipendenti (EC2) sotto questo manager (ECS) possono eseguire attività "Docker" e il manager comprende anche "docker" abbastanza bene. Quindi, ogni volta che hai bisogno di risorse "docker", ti presenti al Manager. Il manager ha già lo stato di ogni dipendente (EC2) che decide quale deve eseguire l'attività.

Ora, tornando alla tua domanda, un manager senza un "dipendente" non ha senso.

inserisci qui la descrizione dell'immagine


Spiegazione molto bella. Di te!
Matley

Bene, puoi avere istanze EC2 senza ECS, ma sarebbe come una semplice macchina virutale.
Lea Reimann

31

EC2 ti consente di avviare singole istanze che puoi utilizzare praticamente per qualsiasi cosa tu voglia. ECS è un servizio container, il che significa che avvierà istanze pronte per il lancio di applicazioni container. La principale distinzione tra i due servizi è che con EC2 devi gestire ciascuna istanza separatamente in qualsiasi metodo tu scelga (manualmente, utilizzando uno strumento CM o in qualsiasi altro modo): distribuisci le tue applicazioni e mantieni la connessione tra i server da solo. ECS ti consente di avviare un cluster di macchine che fungerà da terreno di distribuzione delle tue app container, consentendoti di trattare tutte le istanze nel cluster come un'unica grande istanza disponibile per il carico di lavoro del tuo container.

E per rispondere alla tua domanda: puoi avviare un cluster ECS senza istanze al suo interno, ma poi non sarà in grado di eseguire nulla su di esso. Dopo aver registrato un'istanza EC2 all'interno di un cluster ECS, i container sono pronti per essere eseguiti al suo interno. Quindi la linea di fondo è: puoi utilizzare sia ECS che EC2 con una sola istanza, ma questo non è il caso d'uso effettivo per cui sono stati creati questi servizi.


3

In parole povere, Elastic Container Service (ECS) è un servizio di orchestrazione dei container Docker.

Puoi chiedergli di eseguire una o più immagini Docker, sia come " Servizio " in grado di ridimensionare automaticamente o come " Attività " ad hoc .

I servizi e le attività vengono eseguiti su un " cluster ". In origine, un cluster era un gruppo di uno o più server EC2 preconfigurati che eseguivano ECS Cluster Agent. L'agente del cluster pianifica i contenitori sul server EC2. Questi server EC2 vengono visualizzati nell'elenco delle istanze EC2 e vengono addebitati ai normali costi EC2 al minuto: puoi persino eseguire l'accesso SSH su di essi come qualsiasi normale server EC2. Se desideri una maggiore capacità per eseguire più servizi o attività o se desideri la resilienza contro i guasti EC2, allora avresti più server EC2.

Intorno a novembre 2017, AWS ha aggiunto ECS Fargate . Ora un cluster può essere eseguito "senza server" senza eseguire il provisioning dei nodi EC2. Devi semplicemente definire la quantità di CPU e memoria che l'attività o il servizio richiede per funzionare, il che significa che paghi solo per la CPU e il tempo di memoria anziché l'EC2.


2

Ok, come sai EC2 è una macchina virtuale su AWS e ECS è un sistema di orchestrazione dei container su AWS.

Per utilizzare ECS, è necessario eseguire il contenitore in alcune macchine virtuali che EC2 è una delle opzioni per fornirlo.

Sarà necessario eseguire l'installazione ecs-agentsu EC2 per stabilire una connessione con ECS. Inoltre, ECS può monitorare l'utilizzo delle risorse sul tuo EC2. Quindi in pratica scegli il tipo EC2 di livello più alto, quindi più risorse (CPU / MEM) che il tuo contenitore può utilizzare.


0

La principale differenza sono le istanze Fargate fornite da ECS.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.