Как масштабировать задачи / контейнеры в AWS ECS - PullRequest
0 голосов
/ 28 августа 2018

Это является вводным руководством AWS по развертыванию приложений на основе микросервисов на ECS

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

т.е. если ваш соответствующий файл docker-compose.yml был сделан из 5 services (в контексте создания докера), все они должны в конечном итоге оказаться в том же определении задачи ECS (?).

Из того, что я понимаю, это также служит для автоматического обнаружения служб среди контейнеров (как поведение по умолчанию в docker-compose и docker swarm);

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

Значит ли это, что у вас не может быть масштабирования на уровне контейнера?

Если мне нужна служебная шкала, мне придется масштабировать всех моих контейнеров в моем так называемом стеке?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы не должны иметь все контейнеры в одном и том же определении задачи. Из документов :

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

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

Что касается масштабирования, вы можете создать сервис для каждого определения задачи. Это позволяет логически разделять компоненты в вашем стеке для независимого масштабирования. Например, если у вас есть 2 службы, одна для фонового API-сервиса и другая для интерфейсного nginx, вы можете создать для них 2 отдельных определения задач, каждое из которых будет масштабироваться независимо.

Возможные причины сгруппировать определения контейнеров в одно определение задачи:

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

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

Существует также некоторая документация по архитектуре приложения для ECS здесь , которая объясняет это далее.

0 голосов
/ 29 августа 2018

Хорошо, ECS только масштабирует задачу, а не 1 контейнера внутри задачи, если вы хотите масштабировать контейнер внутри задачи, вы должны масштабировать задачу со всеми контейнерами. Вы должны создать задачу для каждого сервиса. Помните, что AWS считает, что вы хотите запускать задачу только с простым приложением, которое использует службу базы данных из RDS и любую службу, которая может использовать ее, расположенную в инфраструктуре AWS.

...