192 votes

Quelle est la différence entre Amazon ECS et Amazon EC2?

Je viens de commencer sur AWS EC2. Je comprends que EC2 est comme un ordinateur distant où je peux faire à peu près tout ce que je veux. Ensuite, j'ai découvert ECS. Je sais qu'il utilise Docker, mais je suis confus concernant la relation entre ces deux.

Est-ce que ECS est simplement une installation de Docker dans EC2 ? Si j'ai déjà un EC2 et que je lance un ECS, est-ce que cela signifie que j'ai deux instances ?

252voto

Nabeel Ahmed Points 356

Votre question

Est-ce que ECS est juste une installation docker sur EC2? Si j'ai déjà un EC2, et que je démarre un ECS, est-ce que cela signifie que j'ai deux instances?

Non. AWS ECS est juste un regroupement logique (cluster) d'instances EC2, et toutes les instances EC2 faisant partie d'un ECS agissent comme des hôtes Docker c'est-à-dire que l'ECS peut envoyer des commandes pour lancer un conteneur sur eux (EC2). Si vous avez déjà un EC2, et que vous lancez ensuite un ECS, vous aurez toujours une seule instance. Si vous ajoutez/enregistrez (en installant l'Agent de Conteneur AWS ECS) l'EC2 dans l'ECS, il deviendra partie du regroupement, mais restera tout de même une seule instance EC2.

Un Amazon ECS sans aucun EC2 enregistré (ajouté au cluster) ne sert à rien.


TL; DR

Un aperçu

  • EC2 - est tout simplement une machine distante (virtuelle).
  • ECS signifie Elastic Container Service - selon la définition de base d'un cluster informatique, ECS est en fait un regroupement logique de machines/instances EC2. Techniquement parlant, ECS est simplement une configuration pour une utilisation efficace et gestion de vos ressources d'instance(s) EC2 comme le stockage, la mémoire, le CPU, etc.

Pour simplifier davantage, si vous avez lancé un Amazon ECS sans aucune instance EC2 ajoutée, il ne servira à rien c'est-à-dire que vous ne pourrez rien faire avec. ECS n'a de sens que lorsque une (ou plusieurs) instances EC2 y sont ajoutées.

La prochaine chose confuse ici est le terme de conteneur - qui ne sont pas des instances de machines entièrement virtualisées, et Docker est une technologie que nous pouvons utiliser pour créer des instances de conteneurs. Docker est un utilitaire que vous pouvez installer sur votre machine, ce qui en fait un hôte Docker, et sur cet hôte vous pouvez créer des conteneurs (similaires aux machines virtuelles - mais beaucoup plus légères). En résumé, ECS concerne simplement le regroupement d'instances EC2, et utilise Docker pour instancier des conteneurs/instances/machines virtuelles sur ces hôtes (EC2).

Tout ce que vous avez à faire est de lancer un ECS, et d'ajouter/enregistrer autant d'instances EC2 que vous en avez besoin. Vous pouvez ajouter/enregistrer des instances EC2, il vous suffit d'avoir l'Agent de Conteneur Amazon ECS en cours d'exécution sur votre instance/machine EC2, ce qui peut être fait manuellement ou directement en utilisant l'AMI spécial (Amazon Machine Image) c'est-à-dire l'AMI optimisé pour Amazon ECS, qui contient déjà l'Agent de Conteneur Amazon ECS. Lors du lancement d'une nouvelle instance EC2, l'Agent l'enregistre automatiquement dans le cluster ECS par défaut.

L'agent de conteneur fonctionnant sur chacune des instances (instances EC2) au sein d'un cluster Amazon ECS envoie des informations sur les tâches actuellement en cours d'exécution sur l'instance et sur l'utilisation des ressources à Amazon ECS, et démarre et arrête les tâches chaque fois qu'il reçoit une demande d'Amazon ECS. Pour plus d'informations, voir Agent de Conteneur Amazon ECS. Une fois configuré, chacune des instances de conteneur créées (issu quelque soit la machine/EC2) sera une instance dans l'ensemble de Amazon ECS.


Pour plus d'informations - lisez l'étape 10 de cette documentation : Lancement d'une Instance de Conteneur Amazon ECS:

Choisissez une AMI pour votre instance de conteneur. Vous pouvez choisir l'AMI optimisé pour Amazon ECS, ou un autre système d'exploitation, comme CoreOS ou Ubuntu. Si vous ne choisissez pas l'AMI optimisé pour Amazon ECS, vous devez suivre les procédures dans Installation de l'Agent de Conteneur Amazon ECS.

Par défaut, votre instance de conteneur se lance dans votre cluster par défaut. Si vous souhaitez le lancer dans votre propre cluster à la place du cluster par défaut, choisissez les détails avancés et collez le script suivant dans le champ de données utilisateur, en remplaçant your_cluster_name par le nom de votre cluster.

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

Ou, si vous avez un fichier ecs.config dans Amazon S3 et avez activé l'accès en lecture seule à Amazon S3 pour le rôle de votre instance de conteneur, choisissez les détails avancés et collez le script suivant dans le champ de données utilisateur, en remplaçant your_bucket_name par le nom de votre bucket pour installer AWS CLI et écrire votre fichier de configuration au moment du lancement. Note Pour plus d'informations sur cette configuration, consultez Stocker la Configuration de l'Instance du Conteneur dans Amazon S3.

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

Juste pour clarifier davantage - vous pouvez créer des conteneurs sur votre unique instance EC2 sans ECS. Installez l'une des technologies de conteneurisation c'est-à-dire Docker et exécutez la commande de création de conteneur, en définissant votre EC2 comme un hôte Docker, et créez autant de conteneurs Docker que vous le souhaitez (ou autant que les ressources de votre EC2 le permettent).

9 votes

Ne signifie pas ECS Elastic Container Service ?

7 votes

Il convient de noter que cette réponse est maintenant largement dépassée avec le lancement d'AWS Fargate début 2018 (qui exécute ECS) : aws.amazon.com/fargate

132voto

subodhkarwa Points 109

En termes simples, ECS est un gestionnaire tandis que les instances EC2 sont comme des employés. Tous les employés (EC2) sous ce gestionnaire (ECS) peuvent effectuer des tâches "Docker" et le gestionnaire comprend également très bien "docker". Donc, chaque fois que vous avez besoin de ressources "Docker", vous vous présentez au Gestionnaire. Le Gestionnaire a déjà des informations de chaque employé (EC2) et décide lequel doit effectuer la tâche.

Maintenant, en revenant à votre question, un gestionnaire sans "employé" n'a pas de sens mais est définitivement possible.

entrer la description de l'image ici

6 votes

Très belle explication. Merci!

2 votes

Eh bien, vous pouvez avoir des instances EC2 sans ECS mais ce ne serait que comme une simple machine virtuelle.

0 votes

Qu'est-ce qu'une tâche?

33voto

Yaron Idan Points 1155

EC2 vous permet de lancer des instances individuelles que vous pouvez utiliser pour à peu près tout ce que vous voulez. ECS est un service de conteneurs, ce qui signifie qu'il lancera des instances prêtes à lancer des applications conteneurisées. La principale distinction entre les deux services est qu'avec EC2, vous devez gérer chaque instance séparément dans la méthode de votre choix (manuellement, en utilisant un outil CM ou de toute autre manière) - déployer vos applications et maintenir la connexion entre les serveurs vous-même. ECS vous permet de lancer un cluster de machines qui serviront de terrain de déploiement pour vos applications conteneurisées, vous permettant de traiter toutes les instances du cluster comme une seule grande instance disponible pour vos charges de travail conteneurisées.

Et pour répondre à votre question - Vous pouvez démarrer un cluster ECS sans aucune instance, mais alors il ne pourra rien exécuter dessus. Une fois que vous avez enregistré une instance EC2 dans un cluster ECS, les conteneurs sont prêts à s'exécuter dessus. Donc, en fin de compte, vous pouvez utiliser à la fois ECS et EC2 avec une seule instance, mais ce n'est pas le cas d'utilisation réel pour lequel ces services ont été construits.

6voto

Alastair McCormack Points 1727

Tout simplement, Elastic Container Service (ECS) est un service d'orchestration de conteneurs Docker.

Vous pouvez lui demander d'exécuter une ou plusieurs images Docker, soit en tant que "Service" capable de mise à l'échelle automatique, soit en tant que "Tâche" ad-hoc.

Les services et tâches s'exécutent sur un "Cluster". À l'origine, un Cluster était un groupe d'un ou plusieurs serveurs EC2 préconfigurés exécutant l'Agent de Cluster ECS. L'Agent de Cluster programmait les conteneurs sur le serveur EC2. Ces serveurs EC2 apparaissent dans votre liste d'instances EC2 et sont facturés aux coûts réguliers par minute des instances EC2 - Vous pouvez même vous y connecter en SSH comme sur n'importe quel serveur EC2 normal. Si vous aviez besoin de plus de capacité pour exécuter plus de Services ou de Tâches, ou si vous vouliez une résilience contre une panne d'EC2, alors vous auriez besoin de plus de serveurs EC2.

Aux environs de novembre 2017, AWS a ajouté ECS Fargate. Désormais, un Cluster peut fonctionner "sans serveur" sans provisionner de nœuds EC2. Vous définissez simplement la quantité de CPU et de mémoire requise par votre Tâche ou Service pour fonctionner, ce qui signifie que vous ne payez que pour le temps CPU et mémoire plutôt que pour les instances EC2.

4voto

Vaibhav Points 51

ECS signifie 'Elastic Container Service'. C'est un service d'orchestration de conteneurs.
Disons que vous avez un conteneur Docker en cours d'exécution et que vous décidez de mettre à jour l'image Docker. C'est une tâche relativement facile à arrêter, à tirer et à exécuter si vous avez un conteneur en cours d'exécution, mais c'est fastidieux de faire les mêmes étapes si vous avez de 10 à 100 conteneurs en cours d'exécution.
Avec AWS ECS, vous pouvez avoir ce contrôle. Vous spécifiez si une mise à jour est nécessaire, fournissez le dernier ID d'image et ECS se chargera de l'arrêt, du tirage et de l'exécution, etc. à votre place. Il offre également de nombreuses autres fonctionnalités supplémentaires, voir - https://aws.amazon.com/ecs/features/
EC2 signifie 'Elastic Compute Cloud'. En termes simples, il s'agit d'une machine virtuelle.
ECS utilise EC2 pour exécuter vos conteneurs.
'Ces conteneurs Docker en cours d'exécution (tâches) sont exécutés sur des instances EC2'.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X