Ein Leitfaden für Anfänger zum Elastic Container Service von Amazon

Dieser Artikel ist ein High-Level-Blick für Anfänger auf Amazon ECS. Wir werden Kernkonzepte, Begriffe, einfache Architekturdiagramme und abstrahierte Beispiele behandeln. Also lasst uns anfangen!

Docker

Um Amazon ECS zu schätzen, müssen Sie zuerst Docker verstehen.

Docker ist eine Client-Server-Anwendung, die unter Linux, Windows und MacOS installiert werden kann und mit der Sie Docker-Container ausführen können. Container sind kompakte Umgebungen, die alles enthalten, was zum Ausführen einer bestimmten Anwendung oder eines Teils einer Anwendung erforderlich ist. Auf einem Computer können mehrere verschiedene Container ausgeführt werden, sofern die Docker-Software installiert ist.

Wenn Sie daran interessiert sind, wieSie funktionieren und wie sich Docker von einer virtuellen Maschine unterscheidet, dann ist dieses Intro zu Docker ein guter Anfang.

Durch die Verwendung von Docker-Containern können Teams eine konsistente Entwicklungsumgebung erstellen, indem sie die Software-, Betriebssystem- und Hardwarekonfiguration in einen Standardbaustein abstrahieren, der auf jedem Computer ausgeführt werden kann.

Jeder Container hat genau das, was er benötigt - zum Beispiel bestimmte Versionen einer Sprache oder Bibliothek - und nicht mehr als er braucht. Wenn Sie möchten, können mehrere Container für verschiedene Teile Ihrer Anwendung verwendet und so eingerichtet werden, dass sie bei Bedarf miteinander kommunizieren.

Indem Sie bestimmte Docker-Container zum Ausführen Ihres Produktionscodes verwenden, können Sie sicher sein, dass Ihre Entwicklungsumgebung genau mit Ihrer Produktionsumgebung übereinstimmt.

Wenn Ihre Anwendung wächst, wird die Verwaltung der Bereitstellung, Struktur, Planung und Skalierung dieser Container schnell sehr kompliziert. Hier kommt ein „Container-Management-Service“ ins Spiel. Er soll einfache Konfigurationsoptionen ermöglichen und das schwere Heben bewältigen, während Sie wieder mit dem Schreiben der App beginnen.

Eine Einführung in Amazon ECS

Amazon Elastic Container Service (ECS) ist laut Amazon

… Ein hoch skalierbarer, schneller Containerverwaltungsdienst, mit dem Docker-Container in einem Cluster einfach ausgeführt, gestoppt und verwaltet werden können.

Es ist vergleichbar mit Kubernetes, Docker Swarm und Azure Container Service.

ECS führt Ihre Container auf einem Cluster von Instanzen der virtuellen Maschine Amazon EC2 (Elastic Compute Cloud) aus, auf denen Docker vorinstalliert ist. Die Installation von Containern, die Skalierung, Überwachung und Verwaltung dieser Instanzen erfolgt sowohl über eine API als auch über die AWS Management Console. Sie können damit die Ansicht von EC2-Instanzen auf einen Ressourcenpool wie CPU und Speicher vereinfachen. Die spezifische Instanz, auf der ein Container ausgeführt wird, und die Wartung aller Instanzen werden von der Plattform verwaltet. Sie müssen nicht darüber nachdenken.

Es ist erwähnenswert, dass es im Gegensatz zu einigen anderen Anbietern, die mehr Flexibilität ermöglichen, in die Amazon-Infrastruktur eingebunden ist. Dies bedeutet jedoch eine hervorragende Integration in andere AWS-Services.

Begriffe und Architektur

Geben wir einen imaginären Kontext für die Definitionen, die wir uns ansehen werden. Angenommen, Sie erstellen eine Anwendung, die auf zwei Docker-Containern ausgeführt wird, möglicherweise einem für die Hauptanwendung und einem für die Verwaltung von Metriken. Beides wird benötigt, damit die Anwendung wie beabsichtigt ausgeführt werden kann. Wenn Sie viel Verkehr hatten, müssen Sie möglicherweise mehrere Containerpaare ausführen.

Hier kommen wir zu zwei neuen Begriffen:

  • eine Aufgabendefinition , Aufgabe und Dienst und
  • einCluster ,ECS-Containerinstanz ,undECS Container Agent .

Aufgabendefinition

Dies ist die Blaupause, die beschreibt, welche Docker-Container ausgeführt werden sollen, und die Ihre Anwendung darstellt. In unserem Beispiel wären es zwei Container. würde die zu verwendenden Images, die zuzuweisende CPU und den zuzuweisenden Speicher, die Umgebungsvariablen, die anzuzeigenden Ports und die Interaktion der Container detailliert beschreiben.

Aufgabe

Eine Instanz einer Aufgabendefinition, in der die darin aufgeführten Container ausgeführt werden. Je nach Bedarf können mehrere Aufgaben von einer Aufgabendefinition erstellt werden.

Bedienung

Definiert die minimalen und maximalen Aufgaben aus einer Aufgabendefinition, die zu einem bestimmten Zeitpunkt ausgeführt wird, sowie die automatische Skalierung und den Lastausgleich. Wenn in unserem Beispiel die CPU für die einzelne Aufgabe, die wir ausgeführt haben, maximal genutzt wurde, möchten wir möglicherweise, dass eine zusätzliche Aufgabe hinzugefügt wird.

Möglicherweise möchten wir jedoch die maximale Anzahl von Aufgaben begrenzen, die ausgeführt werden können, da wir wissen, dass das Ausführen zusätzlicher Aufgaben zusätzliche Ressourcen erfordert, die Geld kosten.

Nachdem wir unseren Service haben, müssen seine Aufgaben irgendwo ausgeführt werden, um zugänglich zu sein. Es muss in einen Cluster gestellt werden, und der Containerverwaltungsdienst übernimmt die Ausführung auf einer oder mehreren ECS-Containerinstanzen .

ECS-Containerinstanzen und ECS-Containeragenten

Dies ist eine EC2-Instanz, auf der Docker und ein ECS Container Agent ausgeführt werden. Eine Containerinstanz kann viele Aufgaben von denselben oder verschiedenen Diensten ausführen.

Der Agent kümmert sich um die Kommunikation zwischen ECS und der Instanz, stellt den Status der Ausführung von Containern bereit und verwaltet die Ausführung neuer Container.

Cluster

Wie oben dargestellt, ist ein Cluster eine Gruppe von ECS-Containerinstanzen. Amazon ECS übernimmt die Logik zum Planen, Verwalten und Verarbeiten von Skalierungsanforderungen an diese Instanzen. Es nimmt Ihnen auch die Arbeit ab, die optimale Platzierung jeder Aufgabe basierend auf Ihrem CPU- und Speicherbedarf zu finden.

Ein Cluster kann viele Dienste ausführen. Wenn Sie mehrere Anwendungen als Teil Ihres Produkts haben, möchten Sie möglicherweise mehrere davon in einem Cluster ablegen. Dies nutzt die verfügbaren Ressourcen effizienter und minimiert die Einrichtungszeit.

Fazit

Wir haben gesehen, wie eine Docker-Anwendung durch eine Aufgabe dargestellt werden kannDefinition , die eine Eins-zu-Eins-Beziehung zu einem Service hat, der sie wiederum verwendet, um viele verschiedene Task- Instanzen zu erstellen .

Dieser Servicewird in einem Cluster bereitgestelltvonECS-ContainerinstanzenDiese bieten den Ressourcenpool, der zum Ausführen und Skalieren Ihrer Anwendung erforderlich ist. Zusätzliche Dienste können für denselben Cluster bereitgestellt werden.

Amazon ECS oder ein beliebiger Containerverwaltungsdienst zielt darauf ab, dies so einfach wie möglich zu gestalten und viele Komplexitäten bei der Ausführung der Infrastruktur in großem Maßstab zu beseitigen.

Wenn Ihre Anforderungen komplexer werden, stellt der Containerverwaltungsservice sicher, dass dies überschaubar bleibt. Mithilfe der API oder der Verwaltungskonsole können Sie Definitionen einrichten, um bei Bedarf neue Containerinstanzen hinzuzufügen. Dies stellt sicher, dass immer eine gesunde Anzahl von Aufgaben ausgeführt wird, und ordnet Ressourcen intelligent auf die Dienste zu.

Danke fürs Lesen!

Ressourcen

  • Schonende Einführung in die Funktionsweise von AWS ECS mit dem Beispiel-Tutorial
  • Bereitstellen von Akka-Clusteranwendungen auf Amazon ECS
  • Bausteine ​​von Amazon ECS
  • Einführung in Amazon EC2 Container Service (ECS) - Docker-Verwaltung unter AWS
  • Amazon ECS: Kernkonzepte
  • AWS EC2 für Anfänger
  • Eine bessere Entwicklungs- / Testerfahrung: Docker und AWS
  • Clusterbasierte Architekturen mit Docker und Amazon EC2 Container Service