Was ist der Unterschied zwischen Amazon ECS und Amazon EC2?

127

Ich fange gerade mit AWS EC2 an. Ich verstehe, dass EC2 wie ein Remotecomputer ist, auf dem ich so ziemlich alles tun 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 ein EC2 habe und ein ECS starte, bedeutet dies, dass ich zwei Instanzen habe?

Paynestrike
quelle

Antworten:

169

Ihre Frage

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

Nein AWS ECSist nur eine logische Gruppierung (Cluster) von EC2Instanzen und alle EC2Instanzen Teil einer ECSHandlung als DockerHost dh ECS kann Befehl senden Sie einen Behälter auf sie starten ( EC2). Wenn Sie bereits eine EC2 haben und dann ECS starten, haben Sie immer noch eine einzelne Instanz. Wenn Sie EC2 zu ECS hinzufügen / registrieren (indem Sie den AWS ECS Container Agent installieren), wird es 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

Ein Überblick

  • EC2 - ist einfach eine entfernte (virtuelle) Maschine.
  • ECSsteht für Elastic Container Service- wie pro grundlegende Definition von Computer - Cluster , ECSim Grunde eine logische Gruppierung ist EC2Maschinen / Instanzen . Technisch gesehen ECSist dies lediglich eine Konfiguration für eine effiziente Nutzung und Verwaltung der EC2 Ressourcen Ihrer Instanz (en), dh Speicher, Speicher, CPU usw.

Um es weiter zu vereinfachen: Wenn Sie ein Programm Amazon ECSohne EC2hinzugefügte Instanzen gestartet haben , ist es für nichts gut, dh Sie können nichts dagegen tun. ECSmacht nur Sinn, wenn eine (oder mehrere) EC2Instanzen hinzugefügt werden.

Das nächste verwirrende Problem ist der Containerbegriff, bei dem es sich nicht um vollständig virtualisierte Maschineninstanzen handelt. Docker ist eine Technologie, mit der wir Containerinstanzen erstellen können. Dockerist ein Dienstprogramm, das Sie auf unserem Computer installieren können, wodurch es zu einem DockerHost wird. Auf diesem Host können Sie Container erstellen (wie bei virtuellen Maschinen, jedoch viel leichter). Zusammenfassend geht ECSes nur um das Clustering von EC2-Instanzen und Dockerum die Instanziierung von Containern / Instanzen / virtuellen Maschinen auf diesen ( EC2) Hosts .

Sie müssen lediglich eine starten ECSund so viele EC2Instanzen 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 Computer ausgeführt wird. Dies kann manuell oder direkt mit dem speziellen AMI (Amazon Machine Image) erfolgen, dh Amazon ECS-optimiertem AMI, das bereits vorhanden ist der Amazon ECS Container Agent. Während des Starts einer neuen EC2-Instanz registriert der Agent sie automatisch im Standard-ECS-Cluster.

Der Containeragent, der auf jeder der Instanzen ( EC2Instanzen) in einem Amazon ECSCluster ausgeführt wird, sendet Informationen zu den aktuell ausgeführten Aufgaben und der Ressourcennutzung der Instanz an Amazon ECS und startet und stoppt Aufgaben, wenn er eine Anforderung von Amazon ECS empfängt. Weitere Informationen finden Sie unter Amazon ECS Container Agent . Nach dem Festlegen ist jede der erstellten Containerinstanzen (von welcher EC2Maschine / welchem Knoten auch immer) eine Instanz im Amazon ECSSchwarm.


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 Amazon ECS-optimierte AMI oder ein anderes Betriebssystem wie CoreOS oder Ubuntu auswählen. Wenn Sie sich nicht für das Amazon ECS-optimierte AMI entscheiden, müssen Sie die Anweisungen unter Installieren des Amazon ECS Container Agent befolgen .

Standardmäßig wird Ihre Containerinstanz in Ihrem Standardcluster gestartet. Wenn Sie anstelle der Standardeinstellung einen eigenen Cluster starten möchten, wählen Sie die Liste "Erweiterte Details" aus und fügen Sie das folgende Skript in das Feld "Benutzerdaten" ein. Ersetzen Sie Ihren_Clusternamen 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, wobei Sie Ihren_Bucket-Namen durch den Namen von ersetzen Ihr Bucket, um die AWS CLI zu installieren und Ihre Konfigurationsdatei beim Start zu schreiben. Hinweis Weitere Informationen zu dieser Konfiguration finden Sie unter Speichern der Konfiguration der Containerinstanz 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 EC2Instanz ohne erstellen ECS. Installieren Sie eine der Containerisierungstechnologien, dh Dockerführen Sie den Befehl create container aus, legen Sie Ihren EC2als DockerHost fest und verfügen DockerSie über so viele Container, wie Sie möchten (oder so viel, wie Ihre EC2Ressourcen zulassen).

Nabeel Ahmed
quelle
8
Steht ECS nicht für Elastic Container Service?
lfk
1
Es sollte beachtet werden, dass diese Antwort mit dem Start von AWS Fargate Anfang 2018 (das ECS ausführt
bsplosion
77

Mit 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, werden Sie dem Manager angezeigt. Der Manager hat bereits den Status eines jeden Mitarbeiters (EC2), der entscheidet, welcher die Aufgabe ausführen soll.

Um auf Ihre Frage zurückzukommen: Ein Manager ohne "Mitarbeiter" macht keinen Sinn.

Geben Sie hier die Bildbeschreibung ein

subodhkarwa
quelle
Sehr schöne Erklärung. Als du!
Matley
Nun, Sie können EC2-Instanzen ohne ECS haben, aber das wäre wie eine einfache virutale Maschine.
Lea Reimann
31

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, dh es werden Instanzen gestartet, die zum Starten von Containeranwendungen bereit sind. Der Hauptunterschied zwischen den beiden Diensten besteht darin, dass Sie mit EC2 jede Instanz auf eine von Ihnen gewählte Methode (manuell, mit einem CM-Tool oder auf andere Weise) separat verwalten müssen - stellen Sie Ihre Anwendungen bereit und pflegen Sie die Verbindung zwischen den Servern selbst. 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. Das Fazit lautet also: Sie können sowohl ECS als auch EC2 mit nur einer Instanz verwenden, aber dies ist nicht der eigentliche Anwendungsfall, für den diese Dienste entwickelt wurden.

Yaron Idan
quelle
3

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

Sie können ihn auffordern, ein oder mehrere Docker-Images auszuführen, entweder als automatisch skalierbarer " Dienst " oder als Ad-hoc- Aufgabe .

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 ECS Cluster Agent ausgeführt wird. Der Cluster-Agent würde die Container auf dem EC2-Server planen. Diese EC2-Server werden in Ihrer EC2-Instanzliste angezeigt und zu regulären EC2-Kosten pro Minute berechnet. Sie können sie sogar wie jeden normalen EC2-Server mit SSH versorgen. Wenn Sie mehr Kapazität für die Ausführung von mehr Diensten oder Aufgaben oder eine Ausfallsicherheit gegen EC2-Fehler wünschen, benötigen Sie mehr EC2-Server.

Um den November 2017 herum fügte AWS ECS Fargate hinzu . Jetzt kann ein Cluster "serverlos" ausgeführt werden, ohne EC2-Knoten bereitzustellen. Sie definieren einfach die Menge an CPU und Speicher, die Ihre Aufgabe oder Ihr Dienst für den Betrieb benötigt. Dies bedeutet, dass Sie nur für die CPU und die Speicherzeit und nicht für die EC2 bezahlen.

Alastair McCormack
quelle
2

Wie Sie wissen, ist EC2 eine virtuelle Maschine unter AWS und ECS ist ein Container-Orchestrierungssystem unter AWS.

Um ECS verwenden zu können, müssen Sie Ihren Container auf einigen virtuellen Maschinen ausführen, für die EC2 eine Option darstellt.

Sie müssen ecs-agentauf EC2 installieren , um eine Verbindung mit ECS herzustellen. Und ECS kann auch die Ressourcennutzung auf Ihrem EC2 überwachen. Grundsätzlich wählen Sie also den übergeordneten EC2-Typ und dann mehr Ressourcen (CPU / MEM), die Ihr Container verwenden kann.

David Hsu
quelle
0

Der Hauptunterschied sind die Fargate-Instanzen, die ECS bereitstellt.

Hongdeshuai
quelle