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

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

Amazon EC2 Container Service

Начало работы

Получите доступ к уровню бесплатного пользования AWS на один год, включая преимущества базовой поддержки AWS Basic Support: круглосуточное обслуживание клиентов (без праздников и выходных), форумы и многое другое.

AmazonEC2ContainerService_ProductDetail

Сервис Amazon EC2 Container Service поддерживает Docker и позволяет запускать контейнеры Docker в кластере инстансов Amazon EC2 и управлять ими. На каждом инстансе EC2 в кластере, управляемом Amazon ECS, работает демон Docker, поэтому любое приложение, которое вы упаковали в виде контейнера локально, будет развернуто и запущено в Amazon ECS без необходимости менять конфигурацию.

Работа с собственной инфраструктурой управления контейнерами обычно включает в себя установку, эксплуатацию и масштабирование своего собственного программного обеспечения для управления кластером, систем управления конфигурацией и решений для мониторинга. Разработка архитектуры и управление доступностью и масштабируемостью этих систем является непростой задачей. Сервис Amazon EC2 Container Service устраняет сложности, связанные с управлением контейнерами. При использовании Amazon ECS вам достаточно лишь запустить кластер инстансов контейнера и указать задания, которые требуется выполнить. Amazon ECS проделает всю остальную работу, связанную с управлением кластером.

Amazon EC2 Container Service позволяет легко определять задания с помощью декларативного шаблона JSON, называемого определением задания. С помощью определения задания можно указать один или несколько контейнеров, необходимых для выполнения задания, включая репозиторий и образ Docker, требования к памяти и процессору, томам общих данных, а также к тому, как контейнеры связаны друг с другом. Можно запустить столько заданий, сколько необходимо из одного файла определения заданий, который можно зарегистрировать с помощью сервиса. Файлы определения заданий также позволяют осуществлять контроль версий спецификации приложения.

Amazon EC2 Container Service предоставляет вам набор простых API, позволяющих осуществлять интеграцию и расширение сервиса. API позволяют создавать и удалять кластеры, регистрировать и отменять регистрацию заданий, запускать и прекращать работу контейнеров Docker, а также предоставлять подробные сведения о состоянии кластера и его инстансов. Также можно использовать AWS CloudFormation для распределения кластеров Amazon ECS, регистрации определений заданий и планирования использования контейнеров.

Amazon EC2 Container Service включает в себя планировщики, которые размещают контейнеры в ваших кластерах, основываясь на ваших потребностях в ресурсах (например процессоре или оперативной памяти), а также требованиях к доступности. Используя доступные планировщики, вы можете запланировать продолжительную работу приложений и сервисов, а также пакетные задания. API Amazon ECS также предоставляют полную информацию о состоянии кластера, что позволяет вам писать собственные планировщики или интегрировать существующие планировщики сторонних разработчиков (например Marathon). Amazon ECS – это система оптимистического параллелизма с общим состоянием, которая предоставляет полные сведения о состоянии кластера для всех планировщиков. Можно разработать свои собственные планировщики или интегрировать планировщики сторонних разработчиков с помощью API Amazon ECS или Blox, подборки программного обеспечения с открытым исходным кодом для оркестрации контейнеров и управления ими. Подробнее см. на странице Blox в GitHub.

Автоматическое восстановление контейнеров
Планировщик Amazon ECS Service будет автоматически восстанавливать работу неисправных контейнеров, чтобы гарантировать наличие необходимого количества контейнеров, поддерживающих работу вашего приложения.

Развертывание контейнеров
Amazon ECS позволяет легко обновлять версии ваших контейнеров. Вы можете загрузить новую версию определения задания приложения, а планировщик Amazon ECS автоматически запустит новые контейнеры, использующие обновленный образ, и остановит контейнеры, использующие предыдущую версию. Amazon ECS автоматически зарегистрирует и отменит регистрацию ваших контейнеров в связанном ELB.

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

Интерфейс командной строки Amazon EC2 Container Service (Amazon ECS CLI) позволяет упростить локальную разработку, а также поможет легко настроить кластер Amazon ECS и связанные с ним ресурсы (например инстанс EC2). Amazon ECS CLI поддерживает Docker Compose – инструмент с открытым исходным кодом для определения и запуска многоконтейнерных приложений. Вы можете применить одно и то же определение Compose для определения многоконтейнерного приложения как на компьютере для разработки, так и в рабочей среде. Amazon ECS CLI – это инструмент с открытым исходным кодом, который можно загрузить здесь.

Amazon ECS предоставляет возможности мониторинга контейнеров и кластеров. Вы можете отслеживать среднее и общее использование процессора и памяти запущенными заданиями, сгруппированными по определению задания, сервису или кластеру с помощью Amazon CloudWatch. Также можно установить предупреждения CloudWatch для оповещения о том, когда необходимо осуществить масштабирование контейнеров или кластеров в сторону увеличения или уменьшения.

Чтобы упростить диагностику ошибок, журналы агента ECS каждого инстанса контейнера и журналы контейнера Docker можно пересылать в сервис Amazon CloudWatch Logs. Можно также записывать все свои вызовы API Amazon ECS и получать файлы журналов с помощью AWS CloudTrail. Записанная информация включает в себя идентификацию оператора, совершившего вызов API, время вызова API, IP-адрес источника, совершившего вызов API, параметры запроса, а также элементы ответа, возвращенные сервисом Amazon ECS. CloudTrail предоставляет доступ к истории вызовов API, совершенных из консоли управления Amazon ECS, AWS SDK и интерфейса командной строки AWS, а также делает возможным проведение анализа безопасности, отслеживание изменения ресурсов и аудит соответствия.

Amazon EC2 Container Service можно использовать с любым сторонним или доступным частным реестром Docker, а также с Docker Hub – репозиторием образов, размещаемом в Docker. Вам необходимо лишь указать репозиторий в определении задания, а Amazon ECS будет извлекать подходящие образы для ваших приложений.

Amazon EC2 Container Service позволяет указать роль IAM для каждого задания ECS. Это позволяет назначить инстансам контейнера ECS роль с минимальными правами. При этом будет соблюдена политика доступа с минимальными привилегиями и предоставлена возможность раздельно управлять ролями инстанса и задания. Вы также будете видеть, какое задание какую роль использует, – это можно отслеживать по журналам CloudTrail.