Eine Aufgabe Definition ist eine Sammlung von 1 oder mehr Container - Konfigurationen . Einige Aufgaben benötigen möglicherweise nur einen Container, während andere Aufgaben möglicherweise zwei oder mehr potenziell verknüpfte Container benötigen, die gleichzeitig ausgeführt werden. In der Aufgabendefinition können Sie angeben, welches Docker-Image verwendet werden soll, welche Ports verfügbar gemacht werden sollen, wie viel CPU und Speicher zugewiesen werden sollen, wie Protokolle erfasst und Umgebungsvariablen definiert werden sollen.
Eine Aufgabe wird erstellt, wenn Sie eine Aufgabe direkt ausführen, wodurch Container (in der Aufgabendefinition definiert) gestartet werden, bis sie gestoppt werden oder von selbst beendet werden. Zu diesem Zeitpunkt werden sie nicht automatisch ersetzt . Das direkte Ausführen von Aufgaben ist ideal für Jobs mit kurzer Laufzeit, möglicherweise als Beispiel für Dinge, die über CRON ausgeführt wurden.
Ein Service wird verwendet, um sicherzustellen, dass immer eine bestimmte Anzahl von Aufgaben ausgeführt wird . Wenn der Container einer Aufgabe aufgrund eines Fehlers beendet wird oder die zugrunde liegende EC2-Instanz fehlschlägt und ersetzt wird, ersetzt der ECS-Dienst die fehlgeschlagene Aufgabe. Aus diesem Grund erstellen wir Cluster, damit der Service über zahlreiche Ressourcen in Bezug auf CPU-, Speicher- und Netzwerkports verfügt. Für uns spielt es keine Rolle, auf welcher Instanz Aufgaben ausgeführt werden, solange sie ausgeführt werden. Eine Dienstkonfiguration verweist auf eine Aufgabendefinition. Ein Service ist für die Erstellung von Aufgaben verantwortlich .
Dienste werden normalerweise für Anwendungen mit langer Laufzeit wie Webserver verwendet. Wenn ich beispielsweise meine von Node.JS betriebene Website in Oregon (us-west-2) bereitstelle, möchte ich aus Gründen der Hochverfügbarkeit mindestens drei Aufgaben in den drei Verfügbarkeitszonen (AZ) ausführen. Wenn einer ausfällt, habe ich zwei weitere und der ausgefallene wird ersetzt (lesen Sie das als Selbstheilung !). Das Erstellen eines Dienstes ist der Weg, um dies zu tun. Wenn ich 6 EC2-Instanzen in meinem Cluster hatte, 2 pro AZ, verteilt der Dienst Aufgaben automatisch so gut wie möglich auf Zonen, wobei auch CPU-, Speicher- und Netzwerkressourcen berücksichtigt werden.
AKTUALISIEREN:
Ich bin mir nicht sicher, ob es hilfreich ist, diese Dinge hierarchisch zu betrachten.
Ein weiterer sehr wichtiger Punkt ist, dass ein Dienst für die Verwendung eines Load Balancers konfiguriert werden kann, sodass der Service beim Erstellen der Aufgaben, dh beim Starten der in der Aufgabendefinition definierten Container, die EC2-Instanz des Containers automatisch beim Load Balancer registriert. Aufgaben können nicht für die Verwendung eines Lastenausgleichs konfiguriert werden, sondern nur für Dienste.