Qual è la differenza tra un'attività e un servizio in AWS ECS?


114

Sembra che si possa eseguire un'attività o un servizio in base a una definizione dell'attività. Quali sono le differenze e le somiglianze tra Task e Service? C'è un indizio nel fatto che si possa specificare "Task Group" durante la creazione di attività ma non di servizio? Attività e servizio sono gerarchicamente uguali istanze della definizione dell'attività o il servizio è composto da attività?

Risposte:


235

Una definizione di attività è una raccolta di 1 o più configurazioni di contenitori . Alcune attività potrebbero richiedere un solo contenitore, mentre altre attività potrebbero richiedere 2 o più contenitori potenzialmente collegati in esecuzione contemporaneamente. La definizione dell'attività consente di specificare quale immagine Docker utilizzare, quali porte esporre, quanta CPU e memoria assegnare, come raccogliere i log e definire le variabili di ambiente.

Una task viene creato quando si esegue un'attività direttamente, che lancia contenitore (s) (definito nella definizione dei compiti) fino a quando non vengono arrestati o l'uscita da soli, al punto che essi sono non sostituiti automaticamente . L'esecuzione diretta di attività è l'ideale per lavori di breve durata, forse ad esempio cose che sono state realizzate tramite CRON.

Un servizio viene utilizzato per garantire che tu abbia sempre un certo numero di attività in esecuzione in ogni momento . Se il contenitore di un'attività esce a causa di un errore o l'istanza EC2 sottostante non riesce e viene sostituita, il servizio ECS sostituirà l'attività non riuscita. Questo è il motivo per cui creiamo Cluster in modo che il Servizio abbia molte risorse in termini di CPU, Memoria e Porte di rete da utilizzare. Per noi non importa su quale istanza vengono eseguite le attività fintanto che vengono eseguite. Una configurazione del servizio fa riferimento a una definizione dell'attività. Un servizio è responsabile della creazione di attività .

I servizi vengono in genere utilizzati per applicazioni a esecuzione prolungata come i server Web. Ad esempio, se distribuissi il mio sito Web basato su Node.JS in Oregon (us-west-2), vorrei dire almeno tre attività in esecuzione nelle tre zone di disponibilità (AZ) per motivi di alta disponibilità; se uno fallisce ne ho altri due e quello fallito verrà sostituito (leggilo come auto-guarigione !). Creare un servizio è il modo per farlo. Se avessi 6 istanze EC2 nel mio cluster, 2 per AZ, il servizio bilancerà automaticamente le attività tra le zone nel miglior modo possibile, considerando anche CPU, memoria e risorse di rete.

AGGIORNARE:

Non sono sicuro che aiuti pensare a queste cose in modo gerarchico.

Un altro punto molto importante è che un servizio può essere configurato per utilizzare un bilanciamento del carico, in modo che mentre crea le attività, ovvero avvia i contenitori definiti nella definizione delle attività, il servizio registrerà automaticamente l'istanza EC2 del contenitore con il bilanciamento del carico. Le attività non possono essere configurate per utilizzare un bilanciamento del carico, solo i servizi possono farlo.


1
Grazie mille @talentedmrjones! È quindi semplice come "utilizzare Task per lavori di breve durata e utilizzare Service per servizi di lunga durata"? C'è qualche possibilità che tu possa commentare "Attività e servizio sono gerarchicamente uguali istanze della definizione dell'attività o il servizio è composto da attività"?
Bob Jones

Cosa non capisco: perché quando viene creata l'attività posso modificare i valori delle variabili di ambiente ma non sembra essere possibile per il servizio
Nikolay Klimchuk

1
I servizi @NikolayKlimchuk gestiscono solo le attività: sono le attività stesse che definiscono e utilizzano gli envar.
dal

cos'è un "gruppo di attività"
red888

@NikolayKlimchuk scusa per la risposta in ritardo. I servizi vengono utilizzati per pianificare i contenitori, le attività vengono utilizzate per definire i contenitori. Questo è il motivo per cui utilizzi le attività per controllare env vars.
talentuosomrjones

42

Splendidamente spiegato a parole da @talentedmrjones. L'immagine sotto ti aiuterà a visualizzarla facilmente :)

Cluster, servizio, istanza EC2 e attività in azione


Bella visualizzazione! :-)
sgsi

2
Se un visualizzatore di risposte vuole approfondire Amazon ECS, visita freecodecamp.org/news/… . Splendidamente spiegato!
realPK

@realPK pagina davvero molto utile, grazie per la raccomandazione!
Christophe

2

Definizione dell'attività:

Questo è il progetto che descrive quali contenitori Docker eseguire e rappresenta la tua applicazione. Include diverse attività.

Definizione dell'attività

Servizio:

Un'istanza di definizione dell'attività. Definisce inoltre le attività minime e massime da una definizione attività eseguita in un determinato momento, scalabilità automatica e bilanciamento del carico.

Istanze di container ECS:

Questa è un'istanza EC2 su cui sono in esecuzione Docker e un ECS Container Agent. L'agente si occupa della comunicazione tra ECS e l'istanza, fornendo lo stato di esecuzione dei container e gestendone l'esecuzione di nuovi.

Relazione:

inserisci qui la descrizione dell'immagine

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.