web-dev-qa-db-fra.com

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

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

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

79
paynestrike

Ta question

ECS est-il juste une installation de menu fixe dans EC2? Si j'ai déjà un EC2, alors je lance un ECS, cela signifie-t-il que j'ai deux instances?

AWS ECS n'est qu'un regroupement logique (cluster) d'instances EC2. Toutes les instances EC2 d'un ECS agissent comme un hôte Docker, c'est-à-dire qu'ECS peut envoyer une commande pour y lancer un conteneur (EC2). Si vous avez déjà un EC2 et que vous lancez ensuite ECS, vous aurez toujours une seule instance. Si vous ajoutez/enregistrez (en installant l'agent de conteneur AWS ECS) l'EC2 à ECS, il deviendra la partie du cluster, mais restera une instance unique d'EC2.

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


TL; DR

Un aperçu

  • EC2 - est simplement une machine distante (virtuelle).
  • ECS signifie Elastic Container Service - selon la définition de base de groupe d’ordinateurs , ECS est fondamentalement un regroupement logique de EC2 machines/instances . Techniquement parlant, ECS est une simple configuration permettant une utilisation et une gestion efficaces de vos ressources d'instance EC2, à savoir le stockage, la mémoire, la CPU, etc.

Pour simplifier davantage, si vous avez lancé un Amazon ECS auquel aucune instance de EC2 n’a été ajoutée, c’est bon pour rien, c’est-à-dire que vous ne pouvez rien y faire. ECS n’a de sens que lorsqu’une (ou plusieurs) instances de EC2 y sont ajoutées.

La prochaine chose qui prête à confusion ici est le terme de conteneur - qui n’est pas totalement virtualisé, et Docker est une technologie que nous pouvons utiliser pour créer des instances de conteneur. Docker est un utilitaire que vous pouvez installer sur notre ordinateur, ce qui en fait un hôte Docker. Sur cet hôte, vous pouvez créer des conteneurs (identiques aux ordinateurs virtuels, mais beaucoup plus légers). Pour résumer, ECS concerne simplement la mise en cluster 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 ECS et d’enregistrer/ajouter autant d’instances EC2 que nécessaire. Vous pouvez ajouter/enregistrer des instances EC2. Tout ce dont vous avez besoin est Amazon ECS Container Agent qui s'exécute sur votre instance/machine EC2, ce qui peut être fait manuellement ou directement à l'aide de l'AMI spéciale (Amazon Machine Image), à ​​savoir une AMI optimisée pour Amazon ECS, qui est déjà disponible. 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 qui s'exécute sur chacune des instances (instances EC2) au sein d'un cluster Amazon ECS envoie des informations sur les tâches en cours d'exécution de l'instance et l'utilisation des ressources vers 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, consultez Agent de conteneur Amazon ECS . Une fois définies, chacune des instances de conteneur créées (quelle que soit la machine/le noeud EC2) sera une instance de l'essaim 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ée pour Amazon ECS ou un autre système d'exploitation, tel que CoreOS ou Ubuntu. Si vous ne choisissez pas l'AMI optimisée pour Amazon ECS, vous devez suivre les procédures décrites 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 lancer votre propre cluster au lieu du cluster par défaut, choisissez la liste Détails avancés et collez le script suivant dans le champ Données de l'utilisateur, en remplaçant votre nom_cluster 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 à votre rôle d'instance de conteneur, choisissez la liste Détails avancés et collez le script suivant dans le champ Données de l'utilisateur, en remplaçant votre nom_bucket par le nom suivant: votre compartiment pour installer l'AWS CLI et écrire votre fichier de configuration au moment du lancement. Remarque Pour plus d'informations sur cette configuration, consultez la rubrique Stockage de la configuration d'instance de conteneur dans Amazon S3.

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

Pour clarifier davantage, vous pouvez créer des conteneurs sur votre seule instance EC2 sans ECS. Installez l'une des technologies de conteneurisation, par exemple Docker, puis exécutez la commande create container en définissant votre EC2 en tant qu'hôte Docker et disposez autant de conteneurs Docker que vous le souhaitez (ou autant que le permettent les ressources de votre EC2).

122
Nabeel Ahmed

En termes simples, ECS est un gestionnaire alors 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". Ainsi, chaque fois que vous avez besoin de ressources "docker", vous vous présentez au responsable. Manager a déjà le statut de chaque employé (EC2) qui décide lequel doit exécuter la tâche.

Maintenant, pour revenir à votre question, un manager sans "employé" n'a pas de sens.

enter image description here

30
subodhkarwa

EC2 vous permet de lancer des instances individuelles que vous pouvez utiliser pour à peu près tout ce que vous aimez. ECS est un service de conteneur, ce qui signifie qu'il lancera des instances qui seront prêtes à lancer des applications de conteneur. La principale différence entre les deux services est que, avec EC2, vous devez gérer chaque instance séparément, quelle que soit la méthode choisie (manuellement, à l'aide d'un outil de gestion de contenu ou de toute autre manière): déployez vos applications et maintenez vous-même la connexion entre les serveurs. ECS vous permet de lancer un cluster de machines qui servira de terrain de déploiement pour vos applications de conteneur, vous permettant ainsi de traiter toutes les instances du cluster comme une seule grande instance disponible pour votre workload de conteneur.

Et pour répondre à votre question, vous pouvez démarrer un cluster ECS sans instance, mais il ne pourra alors rien exécuter. Une fois que vous avez enregistré une instance EC2 dans un cluster ECS, les conteneurs sont prêts à s'exécuter. En résumé, 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é conçus.

27
Yaron Idan

En termes simples, Elastic Container Service (ECS) est un service d’orchestration de conteneurs Docker.

Vous pouvez lui demander d'exécuter une ou plusieurs images Docker, en tant que fonction de redimensionnement automatique "Service" ou ad-hoc "Task".

Les services et tâches s'exécutent sur un "Cluster". À l'origine, un cluster était un groupe d'au moins un serveur EC2 préconfiguré exécutant l'agent de cluster ECS. L'agent de cluster planifierait les conteneurs sur le serveur EC2. Ces serveurs EC2 apparaissent dans votre liste d’instances EC2 et sont facturés à des coûts EC2 normaux à la minute. Vous pouvez même utiliser SSH dessus, comme tout serveur EC2 normal. Si vous vouliez plus de capacité pour exécuter plus de services ou de tâches, ou si vous vouliez une résilience face aux défaillances EC2, vous utiliseriez plus de serveurs EC2.

Vers novembre 2017, AWS a ajouté ECS Fargate. Désormais, un cluster peut fonctionner sans serveur sans provisionner les nœuds EC2. Vous définissez simplement la quantité de CPU et de mémoire dont votre tâche ou service a besoin pour fonctionner, ce qui signifie que vous ne payez que pour le temps de CPU et de mémoire plutôt que pour le EC2.

0
Alastair McCormack