Посібник для початківців щодо служби еластичних контейнерів Amazon

Ця стаття - новинка для початківців про Amazon ECS. Ми розглянемо основні поняття, терміни, прості схеми архітектури та абстрактні приклади. Тож давайте почнемо!

Докер

Щоб оцінити Amazon ECS, спочатку потрібно зрозуміти Docker.

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

Якщо вас цікавить, яквони працюють, і чим Docker відрізняється від віртуальної машини, тоді це вступ до Docker - чудове місце для початку.

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

Кожен контейнер має саме те, що йому потрібно - наприклад, певні версії мови чи бібліотеки - і не більше, ніж це потрібно. Якщо потрібно, для різних частин вашої програми можна використовувати кілька контейнерів, і їх можна налаштувати для взаємодії між собою, коли це потрібно.

Використовуючи вказані контейнери Docker для запуску виробничого коду, ви можете бути впевнені, що ваше середовище розробки точно відповідає виробничому.

У міру зростання вашої програми управління розгортанням, структурою, плануванням та масштабуванням цих контейнерів швидко ускладнюється. Тут з’являється «послуга управління контейнерами». Вона має на меті надавати прості параметри конфігурації та обробляти важкі роботи, коли ви повертаєтесь до написання програми.

Вступ до Amazon ECS

Amazon Elastic Container Service (ECS), на думку Amazon,

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

Це можна порівняти з Kubernetes, Docker Swarm та Azure Container Service.

ECS запускає ваші контейнери на кластері екземплярів віртуальної машини Amazon EC2 (Elastic Compute Cloud), попередньо встановлених за допомогою Docker. Він обробляє встановлення контейнерів, масштабування, моніторинг та управління цими екземплярами як за допомогою API, так і за допомогою консолі управління AWS. Це дозволяє спростити перегляд екземплярів EC2 до пулу ресурсів, таких як центральний процесор та пам’ять. Конкретний екземпляр, на якому запущений контейнер, і обслуговування всіх екземплярів здійснюється платформою. Не потрібно думати про це.

Варто зазначити, що він пов’язаний з інфраструктурою Amazon, на відміну від деяких інших постачальників, які забезпечують більшу гнучкість. Однак це означає, що він має чудову інтеграцію з іншими службами AWS.

Умови та архітектура

Давайте трохи уявного контексту для визначень, які ми збираємось розглянути. Скажімо, ви створюєте додаток, який працює на двох контейнерах Docker, можливо, один для основної програми, а другий для управління метриками. І те, і інше потрібно, щоб програма працювала за призначенням. Якщо у вас був великий обсяг трафіку, можливо, вам доведеться запустити кілька пар контейнерів.

Тут ми підійшли до двох наборів нових термінів:

  • Визначення завдань , завдання , і служба , і
  • aКластер ,Екземпляр контейнера ECS ,іКонтейнерний агент ECS .

Визначення завдання

Це план, що описує, які контейнери Docker запускати, і представляє вашу програму. У нашому прикладі це були б два контейнери. деталізуватимуть зображення, які слід використовувати, CPU та пам’ять для виділення, змінні середовища, порти для експонування та взаємодію контейнерів.

Завдання

Екземпляр Визначення Завдання, що запускає деталізовані в ньому контейнери. Кілька завдань можуть бути створені одним визначенням завдань, як того вимагає попит.

Обслуговування

Визначає мінімальне та максимальне завдання з одного запуску Визначення завдань у будь-який момент часу, автомасштабування та балансування навантаження. У нашому прикладі, якщо центральний процесор був максимально вичерпаний з одного запущеного нами завдання, ми можемо хотіти, щоб він додав додаткове завдання.

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

Тепер, коли ми маємо нашу Службу, її Завдання потрібно десь запускати, щоб бути доступними. Його потрібно поставити в кластер, і служба управління контейнерами оброблятиме його, що працює через один або кілька екземплярів контейнера ECS .

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

Це екземпляр EC2, на якому запущено Docker та агент контейнера ECS. Екземпляр контейнера може запускати багато завдань з однієї і тієї ж служби.

Агент дбає про зв'язок між ECS та екземпляром, надаючи статус запущених контейнерів та керуючи запущеними новими.

Кластер

Як видно вище, кластер - це група екземплярів контейнерів ECS. Amazon ECS обробляє логіку планування, обслуговування та обробки запитів на масштабування до цих екземплярів. Це також забирає роботу з пошуку оптимального розміщення кожного завдання на основі ваших процесора та потреб у пам'яті.

Кластер може запускати багато служб. Якщо у складі продукту є кілька програм, можливо, ви захочете розмістити кілька з них на одному кластері. Це дозволяє ефективніше використовувати наявні ресурси та мінімізує час налаштування.

Висновок

Ми бачили, як Dockerized додаток може бути представлений ЗавданнямВизначення, яке має взаємозв’язок «один на один» із Службою, яка, у свою чергу, використовує її для створення багатьох різних екземплярів Завдання .

Ця послугарозгортається в кластерзЕкземпляри контейнера ECSякі надають пул ресурсів, необхідних для запуску та масштабування вашої програми. Додаткові служби можуть бути розгорнуті в тому ж кластері.

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

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

Дякуємо за читання!

Ресурси

  • Лагідне введення в те, як працює AWS ECS із прикладом підручника
  • Розгортання кластерних програм Akka на Amazon ECS
  • Будівельні блоки Amazon ECS
  • Вступ до Amazon EC2 Container Service (ECS) - управління Docker на AWS
  • Amazon ECS: Основні концепції
  • AWS EC2 для початківців
  • Кращий досвід розробки / тестування: Docker та AWS
  • Кластерні архітектури, що використовують Docker та Amazon EC2 Container Service