Jaka jest różnica między zadaniem a usługą w AWS ECS?

114

Wydaje się, że można uruchomić zadanie lub usługę na podstawie definicji zadania. Jakie są różnice i podobieństwa między Zadaniem a usługą? Czy jest jakaś wskazówka, że ​​podczas tworzenia zadania można określić „grupę zadań”, ale nie usługę? Czy zadania i usługi są hierarchicznie równymi instancjami definicji zadania, czy usługa składa się z zadań?

Bob Jones
źródło

Odpowiedzi:

235

Zadanie Określenie to zbiór z 1 lub więcej pojemników konfiguracji . Niektóre zadania mogą wymagać tylko jednego kontenera, podczas gdy inne zadania mogą potrzebować 2 lub więcej potencjalnie połączonych kontenerów działających jednocześnie. Definicja zadania umożliwia określenie, który obraz platformy Docker ma być używany, które porty należy udostępnić, ile procesora i pamięci przydzielić, jak zbierać dzienniki i definiować zmienne środowiskowe.

Zadanie jest tworzony po uruchomieniu zadania bezpośrednio, który uruchamia pojemnik (s) (zdefiniowane w definicji zadań), dopóki nie zostaną zatrzymane lub zjazd na własną rękę, w którym miejscu są one nie otrzymuje automatycznie . Bezpośrednie uruchamianie zadań jest idealne do krótkotrwałych zadań, na przykład jako przykład rzeczy, które zostały wykonane za pośrednictwem CRON.

Serwis służy do gwarancji, że zawsze masz jakąś liczbę zadań uruchomionych w każdym czasie . Jeśli kontener zadania zostanie zamknięty z powodu błędu lub podstawowa instancja EC2 ulegnie awarii i zostanie wymieniona, usługa ECS zastąpi nieudane zadanie. Dlatego tworzymy klastry, aby Usługa miała dużo zasobów w zakresie procesora, pamięci i portów sieciowych do wykorzystania. Dla nas tak naprawdę nie ma znaczenia, na którym wystąpieniu zadania działają, o ile działają. Konfiguracja usługi odwołuje się do definicji zadania. Usługa jest odpowiedzialna za tworzenie zadań .

Usługi są zwykle używane w przypadku długotrwałych aplikacji, takich jak serwery internetowe. Na przykład, jeśli wdrożyłem moją witrynę opartą na Node.JS w Oregonie (us-west-2), chciałbym powiedzieć, że co najmniej trzy zadania działają w trzech strefach dostępności (AZ) ze względu na wysoką dostępność; jeśli jeden się nie powiedzie, mam kolejne dwa, a ten, który się nie udał, zostanie zastąpiony (czytaj jako samoleczenie !). Tworzenie usługi jest sposobem na to. Gdybym miał 6 instancji EC2 w moim klastrze, po 2 na AZ, Usługa automatycznie zrównoważy Zadania między strefami, najlepiej jak to możliwe, uwzględniając jednocześnie procesor, pamięć i zasoby sieciowe.

AKTUALIZACJA:

Nie jestem pewien, czy myślenie o tych sprawach w sposób hierarchiczny pomaga.

Innym bardzo ważnym punktem jest to, że Usługę można skonfigurować do korzystania z modułu równoważenia obciążenia, tak aby podczas tworzenia Zadań - czyli uruchamiania kontenerów zdefiniowanych w definicji zadania - usługa automatycznie rejestrowała instancję EC2 kontenera w module równoważenia obciążenia. Nie można skonfigurować zadań do korzystania z modułu równoważenia obciążenia, tylko usługi mogą.

utalentowani
źródło
1
Dziękuję bardzo @talentedmrjones! Czy jest to tak proste, jak „użyj zadania do krótkotrwałego zadania i użyj usługi do długotrwałych usług”? Jest jakaś szansa, że ​​mógłbyś skomentować „Czy zadania i usługi są hierarchicznie równymi wystąpieniami definicji zadania, czy usługa składa się z zadań”?
Bob Jones
Czego nie rozumiem: dlaczego po utworzeniu zadania mogę zmienić wartości zmiennych środowiskowych, ale wydaje się, że nie jest to możliwe do obsługi
Nikolay Klimchuk
1
Usługi @NikolayKlimchuk zarządzają tylko zadaniami - to same zadania definiują i używają środowisk.
bwobst
co to jest „grupa zadaniowa”
red888
@NikolayKlimchuk przepraszam za spóźnioną odpowiedź. Usługi służą do planowania kontenerów, zadania służą do definiowania kontenerów. Dlatego używasz zadań do kontrolowania zmiennych środowiskowych.
talentedmrjones
42

Pięknie wyjaśnione słowami przez @talentedmrjones. Poniższe zdjęcie pomoże Ci to łatwo zwizualizować :)

Klaster, usługa, instancja i zadanie EC2 w akcji

realPK
źródło
Niezła wizualizacja! :-)
sgsi
2
Jeśli któryś z przeglądających odpowiedzi chce zagłębić się w Amazon ECS, odwiedź freecodecamp.org/news/… . Pięknie wyjaśnione!
realPK
@realPK bardzo pomocna strona, dzięki za rekomendację!
Christophe
2

Definicja zadania:

To jest plan opisujący, które kontenery platformy Docker mają być uruchamiane i reprezentują Twoją aplikację. Obejmuje kilka zadań.

Definicja zadania

Usługa:

Instancja definicji zadania. Definiuje również minimalne i maksymalne zadania z jednej definicji zadania uruchamiane w danym momencie, automatyczne skalowanie i równoważenie obciążenia.

Instancje kontenerów ECS:

Jest to instancja EC2, na której działa Docker i agent kontenera ECS. Agent dba o komunikację pomiędzy ECS a instancją, zapewniając stan uruchomionych kontenerów i zarządzając uruchomieniem nowych.

Związek:

wprowadź opis obrazu tutaj

xwa130
źródło