Jaka jest różnica między Amazon ECS a Amazon EC2?


127

Właśnie zaczynam przygodę z AWS EC2. Rozumiem, że EC2 jest jak zdalny komputer, na którym mogę zrobić prawie wszystko, co chcę. Wtedy dowiedziałem się o ECS. Wiem, że używa Dockera, ale jestem zdezorientowany co do relacji między tymi dwoma.

Czy ECS to tylko instalacja Dockera w EC2? Jeśli mam już EC2 i uruchamiam ECS, czy to oznacza, że ​​mam dwie instancje?

Odpowiedzi:


169

Twoje pytanie

Czy ECS to tylko instalacja dokera w EC2? Jeśli mam już EC2, to uruchamiam ECS, czy to oznacza, że ​​mam dwie instancje?

Nie. AWS ECSTo tylko logiczne zgrupowanie (klaster) EC2instancji, a wszystkie EC2instancje ECSdziałają jako Dockerhost, tj. ECS może wysłać polecenie uruchomienia na nich kontenera ( EC2). Jeśli masz już EC2, a następnie uruchomisz ECS, nadal będziesz mieć jedną instancję. Jeśli dodasz / zarejestrujesz (instalując AWS ECS Container Agent) EC2 do ECS, stanie się on częścią klastra, ale nadal będzie pojedynczą instancją EC2.

Amazon ECS bez zarejestrowanego EC2 (dodanego do klastra) jest do niczego.


TL; DR

Przegląd

  • EC2 - jest po prostu zdalną (wirtualną) maszyną.
  • ECSoznacza Elastic Container Service- jak w podstawowej definicji klastra komputerowego , ECSjest w zasadzie logiczne grupowanie EC2maszyn / przypadkach . Z technicznego punktu widzenia ECSjest to zwykła konfiguracja zapewniająca efektywne wykorzystanie zasobów EC2 instancji, tj. Pamięć masową, pamięć, procesor itp., Oraz zarządzanie nimi.

Aby jeszcze bardziej uprościć, jeśli uruchomiłeś program Amazon ECSbez EC2dodanych do niego instancji, to nic nie da, tj. Nie możesz nic z tym zrobić. ECSma sens tylko wtedy, gdy EC2zostanie do niego dodana jedna (lub więcej) instancji.

Następną mylącą rzeczą jest termin kontenera - który nie jest w pełni zwirtualizowanymi instancjami maszyn, a Docker to jedna z technologii, której możemy użyć do tworzenia instancji kontenerów. Dockerto narzędzie, które możesz zainstalować na naszej maszynie, co czyni go Dockerhostem, a na tym hoście możesz tworzyć kontenery (takie same jak maszyny wirtualne - ale znacznie lżejsze). Podsumowując, ECSchodzi tylko o grupowanie instancji EC2 i użycie ich Dockerdo tworzenia instancji kontenerów / instancji / maszyn wirtualnych na tych ( EC2) hostach .

Wszystko, co musisz zrobić, to uruchomić ECSi zarejestrować / dodać EC2do niego tyle instancji, ile potrzebujesz. Możesz dodawać / rejestrować instancje EC2, wszystko, czego potrzebujesz, to Amazon ECS Container Agent działający na twojej instancji / maszynie EC2, co można zrobić ręcznie lub bezpośrednio za pomocą specjalnego AMI (Amazon Machine Image), tj. AMI zoptymalizowanego dla Amazon ECS, który już ma Agent kontenerów Amazon ECS. Podczas uruchamiania nowej instancji EC2 Agent automatycznie rejestruje ją w domyślnym klastrze ECS.

Czynnik pojemnik działa na każdej z instancji ( EC2wystąpienia) w ramach Amazon ECSklastra wysyła informacje o aktualnych zadaniach instancji Działający i wykorzystania zasobów na Amazon ECS i uruchamia i zatrzymuje zadania, gdy tylko otrzyma od Amazon ECS. Aby uzyskać więcej informacji, zobacz Agent kontenerów Amazon ECS . Po ustawieniu każda z utworzonych instancji kontenera (dowolnej EC2maszyny / węzła) będzie instancją w Amazon ECSroju.


Aby uzyskać więcej informacji - przeczytaj krok 10 w tej dokumentacji: Uruchamianie instancji kontenera Amazon ECS :

Wybierz AMI dla swojej instancji kontenera. Możesz wybrać AMI zoptymalizowany pod kątem Amazon ECS lub inny system operacyjny, taki jak CoreOS lub Ubuntu. Jeśli nie wybierzesz AMI zoptymalizowanego przez Amazon ECS, musisz postępować zgodnie z procedurami opisanymi w części Instalacja agenta kontenera Amazon ECS .

Domyślnie instancja kontenera jest uruchamiana w domyślnym klastrze. Jeśli chcesz uruchomić swój własny klaster zamiast domyślnego, wybierz listę Szczegóły zaawansowane i wklej następujący skrypt w polu Dane użytkownika, zastępując twoją_nazwa_klastra nazwą klastra.

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

Lub, jeśli masz plik ecs.config w Amazon S3 i włączono dostęp tylko do odczytu do roli instancji kontenera Amazon S3, wybierz listę Advanced Details i wklej następujący skrypt w polu User data, zastępując your_bucket_name nazwą Twój wiadro, aby zainstalować AWS CLI i zapisać plik konfiguracyjny w czasie uruchamiania. Uwaga Aby uzyskać więcej informacji na temat tej konfiguracji, zobacz Przechowywanie konfiguracji wystąpienia kontenera w Amazon S3.

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

Aby to jeszcze bardziej wyjaśnić - możesz tworzyć kontenery na swojej pojedynczej EC2instancji bez ECS. Zainstaluj dowolną technologię konteneryzacji, tj. DockerI uruchom polecenie tworzenia kontenera, ustawiając EC2jako Dockerhosta i miej tyle Dockerkontenerów, ile chcesz (lub tyle, na ile EC2pozwalają na to zasoby).


8
Czy ECS nie oznacza Elastic Container Service?
Lfk

1
Należy zauważyć, że ta odpowiedź jest teraz zasadniczo nieaktualna wraz z uruchomieniem AWS Fargate na początku 2018 r. (Który obsługuje ECS): aws.amazon.com/fargate
bsplosion

77

Krótko mówiąc, ECS jest menedżerem, podczas gdy instancje EC2 są jak pracownicy. Wszyscy pracownicy (EC2) w ramach tego managera (ECS) mogą wykonywać zadania „Dockera”, a kierownik również całkiem dobrze rozumie „dockera”. Dlatego zawsze, gdy potrzebujesz zasobów „docker”, pojawiasz się przed managerem. Kierownik ma już status od każdego pracownika (EC2) decyduje, który z nich ma wykonać zadanie.

Wracając do pytania, menedżer bez „pracownika” nie ma sensu.

wprowadź opis obrazu tutaj


Bardzo ładne wyjaśnienie. Niż Ty!
Matley

Cóż, możesz mieć instancje EC2 bez ECS, ale to byłoby po prostu jak zwykła maszyna wirusowa.
Lea Reimann

31

EC2 umożliwia uruchamianie pojedynczych instancji, których możesz używać do prawie wszystkiego, co chcesz. ECS to usługa kontenerowa, co oznacza, że ​​będzie uruchamiać instancje, które będą gotowe do uruchamiania aplikacji kontenerowych. Główna różnica między tymi dwiema usługami polega na tym, że w przypadku EC2 musisz zarządzać każdą instancją oddzielnie, dowolną metodą (ręcznie, za pomocą narzędzia CM lub w inny sposób) - wdrażaj aplikacje i samodzielnie utrzymuj połączenie między serwerami. ECS umożliwia uruchomienie klastra maszyn, które posłużą jako platforma wdrożeniowa aplikacji kontenerowych, umożliwiając traktowanie wszystkich instancji w klastrze jako jednej dużej instancji dostępnej dla obciążenia kontenera.

Odpowiadając na pytanie - możesz uruchomić klaster ECS bez żadnych instancji, ale wtedy nie będzie mógł na nim niczego uruchomić. Po zarejestrowaniu instancji EC2 w klastrze ECS kontenery są gotowe do działania w nim. Podsumowując, możesz używać zarówno ECS, jak i EC2 z tylko jedną instancją, ale nie jest to rzeczywisty przypadek użycia, dla którego te usługi zostały zbudowane.


3

Mówiąc prościej, Elastic Container Service (ECS) to usługa orkiestracji kontenerów platformy Docker.

Możesz poprosić go o uruchomienie jednego lub więcej obrazów Dockera, jako „ Usługa ” z możliwością automatycznego skalowania lub jako „ Zadanie ” ad-hoc .

Usługi i zadania są uruchamiane w „ klastrze ”. Pierwotnie klaster był grupą jednego lub więcej wstępnie skonfigurowanych serwerów EC2 z agentem klastra ECS. Agent klastra zaplanowałby kontenery na serwerze EC2. Te serwery EC2 pojawiają się na Twojej liście instancji EC2 i są naliczane według zwykłych opłat za minutę EC2 - możesz nawet połączyć się z nimi SSH jak każdy normalny serwer EC2. Jeśli chcesz mieć większą pojemność do obsługi większej liczby usług lub zadań, lub jeśli chcesz mieć odporność na awarie EC2, potrzebujesz więcej serwerów EC2.

Około listopada 2017 roku AWS dodał ECS Fargate . Teraz klaster może działać „bez serwera” bez udostępniania węzłów EC2. Po prostu określasz ilość procesora i pamięci, których zadanie lub usługa wymaga do działania, co oznacza, że ​​płacisz tylko za procesor i czas pamięci, a nie za EC2.


2

Okay, jak wiesz, EC2 to maszyna wirtualna w AWS, a ECS to system orkiestracji kontenerów w AWS.

Aby korzystać z ECS, musisz uruchomić swój kontener na niektórych maszynach wirtualnych, z których EC2 jest jedną z opcji, aby to zapewnić.

Będziesz musiał zainstalować ecs-agentna EC2, aby nawiązać połączenie z ECS. ECS może również monitorować wykorzystanie zasobów w EC2. Więc zasadniczo wybierasz bardziej wysokopoziomowy typ EC2, a następnie więcej zasobów (CPU / MEM) może wykorzystać twój kontener.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.