Руководство для начинающих по службе Elastic Container Service от Amazon

1656616332 rukovodstvo dlya nachinayushhih po sluzhbe elastic container service ot amazon

Эта статья – это обзор высокого уровня Amazon ECS для начинающих. Мы рассмотрим основные понятия, термины, простые диаграммы архитектуры и абстрактные примеры. Итак начнем!

Docker

Чтобы оценить Amazon ECS, сначала нужно понять Docker.

Docker – это программа клиент-сервер, которую можно установить на Linux, Windows и MacOS и которая позволяет запускать контейнеры Docker. Контейнеры – это легкие среды, содержащие все необходимое для запуска определенной программы или части программы. На одной машине можно запускать несколько контейнеров, если на ней установлено программное обеспечение Docker.

Если вас интересует как они работают, и чем Docker отличается от виртуальной машины, то это вступление в Docker – отличное место для начала.

N-3HpONvjcv4ZhAeMBN43aO1XfLfwDcOL2oe
Адаптировано с Docker «Начать», смотрите здесь «bins/libs»

Использование контейнеров Docker позволяет командам иметь согласованную среду разработки, отвлекая программное обеспечение, операционную систему и конфигурацию оборудования в стандартный строительный блок, который можно запустить на любой машине.

Каждый контейнер имеет именно то, что ему нужно – например, определенные версии языка или библиотеки – и не больше, чем ему нужно. Несколько контейнеров можно использовать для разных частей вашего приложения, если вы хотите, и их можно настроить для связи друг с другом, когда это необходимо.

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

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

Введение в Amazon ECS

Amazon Elastic Container Service (ECS), по данным Amazon,

…Быстрая масштабируемая служба управления контейнерами, которая позволяет легко запускать, останавливать и управлять контейнерами Docker в кластере.

Его можно сравнить с Kubernetes, Docker Swarm и Azure Container Service.

4wqn-TABgSmokYgU0tGgbvk8kTng0ibENfLX

ECS запускает ваши контейнеры на кластере экземпляров виртуальных машин Amazon EC2 (Elastic Compute Cloud), предварительно установленных с помощью Docker. Он обрабатывает установку контейнеров, масштабирование, мониторинг и управление этими экземплярами как через API, так и через Консоль управления AWS. Это позволяет упростить просмотр экземпляров EC2 в пул ресурсов, таких как процессор и память. Конкретный экземпляр, на котором работает контейнер, и обслуживание всех экземпляров обрабатывается платформой. Вам не нужно думать об этом.

Стоит отметить, что он привязан к инфраструктуре Amazon, в отличие от других поставщиков, которые придают большую гибкость. Однако это означает, что он отлично интегрируется с другими службами AWS.

Термины и архитектура

Давайте приведем некий мысленный контекст для определений, которые мы собираемся разглядеть. Скажем, вы создаете программу, работающую на двух контейнерах Docker, возможно один для основной программы, а другой для управления показателями. Оба необходимы, чтобы программа работала должным образом. Если у вас большой объем трафика, может потребоваться запустить несколько пар контейнеров.

Здесь мы подходим к двум наборам новых терминов:

  • а Определение задачи, Задачаи Обслуживаниеи
  • а Кластер, Экземпляр контейнера ECS, и ECS Container Agent.

Определение задачи

Это план, описывающий, какие контейнеры Docker запускать, и представляет ваше приложение. В нашем примере это будет два контейнера. подробно описывает используемые изображения, центральный процессор и память для выделения, переменные среды, порты, которые необходимо предоставить, и взаимодействие контейнеров.

Задача

Экземпляр определения задачи, запускающей контейнеры, подробно описаны в нем. Несколько задач могут быть созданы с помощью одного определения задачи, как того требует потребность.

eL718lUcFCktxO96DKpdAIu1uBguoNqOKHRF
Одно определение задачи создает несколько одинаковых задач

Обслуживание

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

Однако мы можем захотеть ограничить максимальное количество задач, которые он может выполнять, поскольку мы знаем, что для выполнения дополнительных задач используются дополнительные ресурсы, которые стоят денег.

Ff1BK5c7YRL7KAv71Hu7ZSwByYpeJPTaolzT
Определение службы, определяющей сигналы о том, когда масштабировать емкость

Теперь, когда у нас есть наша служба, ее задачу нужно где-то запустить, чтобы они были доступны. Его нужно надеть кластер, и служба управления контейнерами будет обрабатывать ее запуск на одном или нескольких Экземпляр(ы) контейнера ECS.

Экземпляры контейнеров ECS и агенты контейнеров ECS

1NSrmTZQxI3ErrpE9qMvTZkjYIZ9zS9BLZrJ
Один экземпляр контейнера ECS, выполняющий 8 заданий из нескольких различных служб

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

Агент заботится о связи между ECS и экземпляром, предоставляя статус запущенных контейнеров и управляя запуском новых.

Кластер

scH1QJHgrQ6NgA1jQo9ITuCiQGkAawRHmzSc
Пример кластера ECS, в котором одна служба выполняет четыре задания в двух экземплярах контейнеров ECS

Как показано выше, кластер – это группа экземпляров контейнеров ECS. Amazon ECS обрабатывает логику планирования, поддержки и обработки запросов на масштабирование этих экземпляров. Это также отнимает работу по поиску оптимального размещения каждой задачи на основе потребностей вашего ЦБ и памяти.

Кластер может запускать многие службы. Если в вашем продукте есть несколько программ, вы можете разместить несколько из них в одном кластере. Это делает более эффективным использование доступных ресурсов и минимизирует время настройки.

W3Xl8d3AHiLkuxV4ZdmvrqtPoFplOtp3hmcY
Несколько служб, распределенных между несколькими экземплярами контейнеров ECS, работающих на одном Кластере

Вывод

Мы видели, как докеризированную программу можно представить с помощью a Задача Определение который имеет отношения один на один с a Обслуживание который, в свою очередь, использует его для создания многих разных Задача экземпляры.

Это Обслуживание развернуто до a Кластер с Экземпляры контейнеров ECS которые обеспечивают пул ресурсов, необходимых для запуска и масштабирования программы. Дополнительные услуги можно развернуть в том же Кластере.

Amazon ECS или любая служба управления контейнерами стремится сделать это как можно проще, абстрагируя многие сложности запущенной инфраструктуры в масштабе.

wRtGhAtM8NLLnpTkp4PAUc80YHObxKVnFFhM
Кластер с 3 службами, каждая из которых выполняет разное количество задач, в двух экземплярах контейнеров ECS

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

Спасибо, что прочли!

Ресурсы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *