В чем разница между Amazon ECS и Amazon EC2?


127

Я только начинаю работать с AWS EC2. Я понимаю, что EC2 похож на удаленный компьютер, на котором я могу делать практически все, что хочу. Потом я узнал об ECS. Я знаю, что он использует Docker, но меня смущает связь между этими двумя.

ECS - это просто докер, установленный в EC2? Если у меня уже есть EC2, и я запускаю ECS, значит ли это, что у меня два экземпляра?

Ответы:


169

Ваш вопрос

ECS - это просто докер, установленный в EC2? Если у меня уже есть EC2, то я запускаю ECS, значит ли это, что у меня два экземпляра?

Нет. AWS ECSЭто просто логическая группировка (кластер) EC2экземпляров, и все EC2экземпляры, входящие в состав какого-либо экземпляра, ECSдействуют как Dockerхост, т.е. ECS может отправить команду для запуска контейнера на них ( EC2). Если у вас уже есть EC2, а затем вы запустите ECS, у вас все равно будет один экземпляр. Если вы добавите / зарегистрируете (установив AWS ECS Container Agent) EC2 в ECS, он станет частью кластера, но по-прежнему будет единственным экземпляром EC2.

Amazon ECS без зарегистрированного EC2 (добавленного в кластер) ни на что не годен.


TL; DR

Обзор

  • EC2 - это просто удаленная (виртуальная) машина.
  • ECSозначает Elastic Container Service- согласно базовому определению компьютерного кластера , ECSэто в основном логическая группа EC2машин / экземпляров . Технически говоря ECS, это простая конфигурация для эффективного использования и управления ресурсами вашего EC2 экземпляра (-ов), то есть хранилищем, памятью, ЦП и т. Д.

Для дальнейшего упрощения, если вы запустили объект Amazon ECSбез EC2добавленных экземпляров, он ни на что не годен, т.е. вы ничего не можете с этим поделать. ECSимеет смысл только после EC2добавления к нему одного (или нескольких) экземпляров.

Следующее, что сбивает с толку, это термин контейнера, который не является полностью виртуализированными экземплярами машин, а Docker - это одна из технологий, которую мы можем использовать для создания экземпляров контейнеров. Docker- это утилита, которую вы можете установить на нашу машину, что делает ее Dockerхостом, и на этом хосте вы можете создавать контейнеры (такие же, как виртуальные машины, но гораздо более легкие). Подводя итог, ECSэто всего лишь кластеризация экземпляров EC2 и их использование Dockerдля создания экземпляров контейнеров / экземпляров / виртуальных машин на этих ( EC2) хостах .

Все, что вам нужно сделать, это запустить ECSи зарегистрировать / добавить EC2к нему столько экземпляров, сколько вам нужно. Вы можете добавлять / регистрировать инстансы EC2, все, что вам нужно, это Amazon ECS Container Agent, работающий на вашем инстансе / машине EC2, что можно сделать вручную или напрямую с помощью специального AMI (Amazon Machine Image), то есть AMI, оптимизированного для Amazon ECS, который уже имеет агент контейнера Amazon ECS. Во время запуска нового экземпляра EC2 агент автоматически регистрирует его в кластере ECS по умолчанию.

Контейнер агент работает на каждом из случаев ( EC2экземпляры) в пределах Amazon ECSкластера посылает информацию о текущих запущенных задачах экземпляра и использовании ресурсов на Amazon ECS и запускает и останавливает задания всякого раза , когда он получает запрос от Amazon ECS. Дополнительные сведения см. В разделе Агент контейнера Amazon ECS . После установки каждый из созданных экземпляров контейнера (любой EC2машины / узла) будет экземпляром в Amazon ECSрое.


Для получения дополнительной информации прочтите шаг 10 этой документации: Запуск экземпляра контейнера Amazon ECS :

Выберите AMI для своего экземпляра контейнера. Вы можете выбрать AMI, оптимизированный для Amazon ECS, или другую операционную систему, например CoreOS или Ubuntu. Если вы не выбрали AMI, оптимизированный для Amazon ECS, вам необходимо выполнить процедуры, описанные в разделе Установка агента контейнера Amazon ECS .

По умолчанию ваш экземпляр контейнера запускается в кластере по умолчанию. Если вы хотите запустить свой собственный кластер вместо кластера по умолчанию, выберите список «Дополнительные сведения» и вставьте следующий сценарий в поле «Пользовательские данные», заменив your_cluster_name именем вашего кластера.

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

Или, если у вас есть файл ecs.config в Amazon S3 и вы разрешили Amazon S3 доступ только для чтения к роли экземпляра контейнера, выберите список Advanced Details и вставьте следующий скрипт в поле User data, заменив your_bucket_name на имя ваше ведро, чтобы установить AWS CLI и записать файл конфигурации во время запуска. Примечание. Для получения дополнительных сведений об этой конфигурации см. Сохранение конфигурации экземпляра контейнера в Amazon S3.

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

Просто чтобы прояснить это дальше - вы можете создавать контейнеры на своем единственном EC2экземпляре без ECS. Установите любую технологию контейнеризации, т. Е. DockerЗапустите команду create container, установив вас EC2в качестве Dockerхоста, и получите столько Dockerконтейнеров, сколько хотите (или столько, сколько EC2позволяют ваши ресурсы).


8
Разве ECS не означает обслуживание эластичных контейнеров?
lfk 07

1
Следует отметить, что этот ответ в настоящее время существенно устарел с запуском AWS Fargate в начале 2018 года (на котором работает ECS): aws.amazon.com/fargate
bsplosion

77

Проще говоря, ECS - это менеджер, а экземпляры EC2 - это просто сотрудники. Все сотрудники (EC2) под этим менеджером (ECS) могут выполнять задачи «Docker», и менеджер также довольно хорошо понимает «docker». Итак, когда вам понадобятся «докерные» ресурсы, вы будете приходить к менеджеру. Менеджер уже имеет статус от каждого сотрудника (EC2) решает, какой из них должен выполнять задачу.

Теперь, возвращаясь к вашему вопросу, менеджер без «сотрудника» не имеет смысла.

введите описание изображения здесь


Очень красивое объяснение. Чем ты!
Мэтли,

Что ж, у вас могут быть экземпляры EC2 без ECS, но это будет похоже на простую виртуальную машину.
Леа Рейманн,

31

EC2 позволяет запускать отдельные экземпляры, которые можно использовать практически для чего угодно. ECS - это контейнерный сервис, что означает, что он будет запускать экземпляры, которые будут готовы к запуску контейнерных приложений. Основное различие между этими двумя сервисами заключается в том, что с EC2 вы должны управлять каждым экземпляром отдельно любым выбранным вами методом (вручную, с помощью инструмента CM или любым другим способом) - развертывать свои приложения и самостоятельно поддерживать соединение между серверами. ECS позволяет запускать кластер машин, который будет служить площадкой для развертывания ваших контейнерных приложений, позволяя рассматривать все экземпляры в кластере как один большой экземпляр, доступный для вашей рабочей нагрузки контейнера.

И чтобы ответить на ваш вопрос - вы можете запустить кластер ECS без экземпляров в нем, но тогда он не сможет ничего запускать на нем. После регистрации экземпляра EC2 внутри кластера ECS контейнеры готовы к работе в нем. Итак, суть в том, что вы можете использовать и ECS, и EC2 только с одним экземпляром, но это не реальный вариант использования, для которого были созданы эти службы.


3

Проще говоря, Elastic Container Service (ECS) - это служба оркестрации контейнеров Docker.

Вы можете попросить его запустить один или несколько образов Docker либо как « Сервис » с возможностью автоматического масштабирования, либо как специальную « Задачу ».

Сервисы и задачи выполняются в « Кластере ». Первоначально кластер представлял собой группу из одного или нескольких предварительно настроенных серверов EC2, на которых запущен агент кластера ECS. Агент кластера будет планировать контейнеры на сервере EC2. Эти серверы EC2 отображаются в вашем списке инстансов EC2, и за них взимается обычная поминутная плата EC2 - вы даже можете подключиться к ним по SSH, как любой обычный сервер EC2. Если вам нужна большая мощность для запуска большего количества служб или задач или если вам нужна устойчивость к сбоям EC2, вам нужно больше серверов EC2.

Примерно в ноябре 2017 года AWS добавила ECS Fargate . Теперь кластер может работать «без сервера» без инициализации узлов EC2. Вы просто определяете количество процессора и памяти, которые требуются вашей задаче или службе для работы, что означает, что вы платите только за процессор и время памяти, а не за EC2.


2

Хорошо, как вы знаете, EC2 - это виртуальная машина на AWS, а ECS - это система оркестровки контейнеров на AWS.

Чтобы использовать ECS, вам необходимо запустить свой контейнер на некоторых виртуальных машинах, EC2 является одним из вариантов для этого.

Вам нужно будет установить ecs-agentна EC2, чтобы установить соединение с ECS. Кроме того, ECS может отслеживать использование ресурсов на вашем EC2. Таким образом, вы выбираете более высокоуровневый тип EC2, чем больше ресурсов (CPU / MEM), которые может использовать ваш контейнер.


0

Основное отличие - это инстансы Fargate, которые предоставляет ECS.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.