web-dev-qa-db-ger.com

Was ist der Unterschied zwischen Amazon ECS und Amazon EC2?

Ich fange gerade mit AWS EC2 an. Ich verstehe, dass EC2 wie ein Remote-Computer ist, auf dem ich so ziemlich alles machen kann, was ich will. Dann habe ich von ECS erfahren. Ich weiß, dass Docker verwendet wird, aber ich bin verwirrt über die Beziehung zwischen diesen beiden.

Ist ECS nur eine Docker-Installation in EC2? Wenn ich bereits eine EC2 habe und eine ECS starte, habe ich dann zwei Instanzen?

79
paynestrike

Ihre Frage

Ist ECS nur eine Docker-Installation in EC2? Wenn ich bereits eine EC2 habe, starte ich dann eine ECS. Bedeutet das, dass ich zwei Instanzen habe?

Nein. AWS ECS Ist nur eine logische Gruppierung (Cluster) von EC2 - Instanzen, und alle EC2 - Instanzen, die Teil eines ECS sind, fungieren als Docker Host, dh ECS kann einen Befehl senden, um einen Container darauf zu starten (EC2). Wenn Sie bereits eine EC2 haben und dann ECS starten, haben Sie immer noch eine einzelne Instanz. Wenn Sie den EC2 zu ECS hinzufügen/registrieren (indem Sie den AWS ECS Container Agent installieren), wird dieser Teil des Clusters, aber immer noch eine einzelne Instanz von EC2.

Ein Amazon ECS ohne registriertes EC2 (zum Cluster hinzugefügt) ist für nichts gut.


TL; DR

Eine Übersicht

  • EC2 - ist einfach eine entfernte (virtuelle) Maschine.
  • ECS steht für Elastic Container Service Gemäß der grundlegenden Definition von Computercluster ist ECS im Grunde eine logische Gruppierung von EC2 Maschinen/Instanzen . Technisch gesehen ist ECS eine reine Konfiguration für eine effiziente Nutzung und Verwaltung Ihrer EC2 - Instanz (en), d. H. Speicher, Speicher, CPU usw.

Um es weiter zu vereinfachen: Wenn Sie ein Amazon ECS Ohne hinzugefügte EC2 - Instanzen gestartet haben, ist es für nichts gut, d. H. Sie können nichts dagegen tun. ECS macht nur Sinn, wenn eine (oder mehrere) EC2 - Instanzen hinzugefügt werden.

Die nächste verwirrende Sache hier ist der Container Begriff - der nicht vollständig virtualisierte Maschineninstanzen ist, und Docker ist eine Technologie, mit der wir Containerinstanzen erstellen können. Docker ist ein Hilfsprogramm, das Sie auf unserer Maschine installieren können, wodurch sie zu einem Docker -Host wird. Auf diesem Host können Sie Container erstellen (wie bei virtuellen Maschinen - aber wesentlich leichter). Zusammenfassend bedeutet ECS nur das Clustering von EC2-Instanzen und verwendet Docker, um Container/Instanzen/virtuelle Maschinen auf diesen zu instanziieren (EC2) Hosts .

Sie müssen lediglich ein ECS starten und so viele EC2 - Instanzen registrieren/hinzufügen, wie Sie benötigen. Sie können EC2-Instanzen hinzufügen/registrieren. Sie benötigen lediglich Amazon ECS Container Agent, der auf Ihrer EC2-Instanz/Ihrem EC2-Computer ausgeführt wird. Dies kann manuell oder direkt über das spezielle AMI (Amazon Machine Image) erfolgen, dh über Amazon ECS-optimiertes AMI, das bereits vorhanden ist der Amazon ECS Container Agent. Während des Starts einer neuen EC2-Instanz registriert der Agent diese automatisch im Standard-ECS-Cluster.

Der Container-Agent , der auf jeder der Instanzen (EC2 - Instanzen) innerhalb eines Amazon ECS - Clusters ausgeführt wird, sendet Informationen zu den Instanzen Aktuelle ausgeführte Aufgaben und Ressourcennutzung für Amazon ECS. Startet und stoppt Aufgaben, wenn eine Anforderung von Amazon ECS eingeht. Weitere Informationen finden Sie unter Amazon ECS Container Agent . Einmal festgelegt, ist jede der erstellten Containerinstanzen (von jedem EC2 - Rechner/Knoten) eine Instanz im Schwarm von Amazon ECS.


Weitere Informationen finden Sie in Schritt 10 dieser Dokumentation: Starten einer Amazon ECS-Containerinstanz :

Wählen Sie eine AMI für Ihre Containerinstanz. Sie können das für Amazon ECS optimierte AMI oder ein anderes Betriebssystem wie CoreOS oder Ubuntu auswählen. Wenn Sie das für Amazon ECS optimierte AMI nicht auswählen, müssen Sie den Anweisungen unter Installieren des Amazon ECS-Container-Agenten folgen.

Standardmäßig wird Ihre Containerinstanz in Ihrem Standardcluster gestartet. Wenn Sie statt der Standardeinstellung einen eigenen Cluster starten möchten, wählen Sie die Liste "Erweiterte Details" und fügen Sie das folgende Skript in das Feld "Benutzerdaten" ein. Ersetzen Sie dabei den Namen Ihres Clusters durch den Namen Ihres Clusters.

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

Wenn Sie eine ecs.config-Datei in Amazon S3 haben und den schreibgeschützten Zugriff von Amazon S3 auf Ihre Containerinstanzrolle aktiviert haben, wählen Sie die Liste Erweiterte Details aus und fügen Sie das folgende Skript in das Feld Benutzerdaten ein. Ersetzen Sie dabei your_bucket_name durch den Namen von Ihr Bucket, um die AWS-CLI zu installieren und Ihre Konfigurationsdatei zum Startzeitpunkt zu schreiben. Hinweis Weitere Informationen zu dieser Konfiguration finden Sie unter Speichern der Containerinstanzkonfiguration in Amazon S3.

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

Nur um es weiter zu verdeutlichen - Sie können Container auf Ihrer einzelnen EC2 - Instanz ohne ECS erstellen. Installieren Sie eine der Containerisierungstechnologien, z. B. Docker, und führen Sie den Befehl create container aus, wobei Sie EC2 Als Docker Host festlegen und so viele Docker Container wie möglich haben Sie möchten (oder so viel, wie die Ressourcen Ihres EC2 erlauben).

122
Nabeel Ahmed

In einfachen Worten, ECS ist ein Manager, während EC2-Instanzen genau wie Mitarbeiter sind. Alle Mitarbeiter (EC2) unter diesem Manager (ECS) können "Docker" -Aufgaben ausführen, und der Manager versteht auch "Docker" ziemlich gut. Wenn Sie also "Docker" -Ressourcen benötigen, wenden Sie sich an den Manager. Der Manager hat bereits den Status eines jeden Mitarbeiters (EC2), der entscheidet, welche Aufgabe er ausführen soll.

Nun, um auf Ihre Frage zurückzukommen: Ein Manager ohne "Angestellten" macht keinen Sinn.

enter image description here

30
subodhkarwa

Mit EC2 können Sie einzelne Instanzen starten, die Sie für so ziemlich alles verwenden können, was Sie möchten. ECS ist ein Containerdienst, der Instanzen startet, die zum Starten von Containeranwendungen bereit sind. Der Hauptunterschied zwischen den beiden Diensten besteht darin, dass Sie mit EC2 jede Instanz separat verwalten müssen (manuell, mit einem CM-Tool oder auf andere Weise). Stellen Sie Ihre Anwendungen bereit und stellen Sie die Verbindung zwischen den Servern selbst her. Mit ECS können Sie einen Cluster von Computern starten, der als Bereitstellungsgrund für Ihre Container-Apps dient. Auf diese Weise können Sie alle Instanzen im Cluster als eine große Instanz behandeln, die für Ihre Container-Workload verfügbar ist.

Und um Ihre Frage zu beantworten: Sie können einen ECS-Cluster ohne Instanzen starten, aber dann kann er nichts darauf ausführen. Sobald Sie eine EC2-Instanz in einem ECS-Cluster registriert haben, können Container darin ausgeführt werden. Unter dem Strich können Sie also sowohl ECS als auch EC2 mit nur einer Instanz verwenden. Dies ist jedoch nicht der tatsächliche Anwendungsfall, für den diese Dienste entwickelt wurden.

27
Yaron Idan

Einfach ausgedrückt ist der Elastic Container Service (ECS) ein Docker-Container-Orchestrierungsdienst.

Sie können es auffordern, ein oder mehrere Docker-Images auszuführen, entweder als Auto-Scaling-fähiges "Service" oder als Ad-hoc "Task".

Die Dienste und Aufgaben werden auf einem "Cluster" ausgeführt. Ursprünglich war ein Cluster eine Gruppe von einem oder mehreren vorkonfigurierten EC2-Servern, auf denen der ECS-Cluster-Agent ausgeführt wird. Der Cluster-Agent plant die Container auf dem EC2-Server. Diese EC2-Server werden in Ihrer EC2-Instances-Liste angezeigt und werden zu regulären EC2-Minutenkosten berechnet. Wenn Sie mehr Kapazität benötigen, um mehr Dienste oder Aufgaben auszuführen, oder wenn Sie die Ausfallsicherheit von EC2 gewährleisten möchten, benötigen Sie mehr EC2-Server.

Um November 2017 herum hat AWS ECS Fargate hinzugefügt. Jetzt kann ein Cluster "serverlos" ausgeführt werden, ohne EC2-Knoten bereitzustellen. Sie definieren einfach die Menge an CPU und Arbeitsspeicher, die Ihre Aufgabe oder Ihr Dienst benötigt, um zu arbeiten, was bedeutet, dass Sie nur für die CPU und die Arbeitsspeicherzeit und nicht für den EC2 bezahlen.

0