2016-04-19 2 views
1

Я концептуально пытаюсь понять, как использовать AWS ECS для запуска моего кластера «jobs».AWS ECS запускает задачу, требующую много ядер

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

Мой вопрос в этом случае -, могу ли я использовать AWS ECS для «увеличения» количества «видимых» ядер для задачи, выполняемой внутри контейнера Docker. Например, мой «кластер» ограничен только одним экземпляром? Или «кластер» расширяется до нескольких экземпляров?

Я не смог найти ответы на мои просмотры через документы AWS.

ответ

0

«увеличить» количество «видимых» ядер к задаче запуска внутри моего Докер контейнера

Container и кластерный разные вещи, вы можете запускать много контейнеров на одном экземпляре, но вы можете 't запускать один контейнер для экземпляров с несколькими экземплярами.

Кластер - это набор докеров.

является моим «кластером», ограниченным только одним экземпляром?

нет, вы можете выбрать количество экземпляров в кластере

+0

Кластер представляет собой набор экземпляров EC2 _container_ (экземпляры, которые могут запускать контейнеры), а не контейнеры. – Tony

+0

yep, ваш ответ лучше :), но общая идея, что он «может запускать много контейнеров в одном экземпляре, но не может запускать один контейнер для экземпляров с несколькими экземплярами». такой же;) – vvchik

+1

Yep. Очевидно, что даже привязка контейнеров к экземплярам не поддерживается, [кажется] (https://forums.aws.amazon.com/thread.jspa?messageID=610186򔾊). – Tony

2

У меня была похожая ситуация, отведя приложение на Python, который использовал скрипт на нерест копии на основе числа ядер. Ответ на этот вопрос - это не столько проблема ECS, сколько наилучшая практика Docker ... вы должны стремиться использовать 1 процесс на контейнер. (см. https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

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

Ваш кластер представляет собой коллекцию экземпляров EC2 с запущенной службой ECS. Каждый экземпляр имеет определенное количество блоков ЦП (обычно 1024 единицы = 1 ядро) и ОЗУ. Я профилировал свое приложение при максимальной нагрузке и подстраивал смесь, пока не получил ее там, где мне понравилось. Если ваше приложение может использовать больше процессора, попробуйте дать ему 2048 CPU или какую-то другую сумму и посмотреть, как это работает. Я использовал Meros (https://meros.io/), чтобы профайл приложения.

Надеюсь, это поможет!

2

Cluster - это всего лишь несколько экземпляров EC2 с ECS-поддержкой (с программным обеспечением специального агента) и сгруппированы вместе. Задачи, которые вы запускаете в этом кластере, распространяются по этим экземплярам. Каждая задача может включать несколько контейнеров. Тем не менее, каждый контейнер остается в своих «границах» экземпляров, аппаратно. Он выделяет несколько «блоков ЦП» и делится ими с другими контейнерами, запущенными на одном экземпляре.

С моей точки зрения, выполнение процесса, охватывающего несколько ядер в контейнере, не совсем подходит идее архитектуры ECS - похоже, пытается выполнить часть задания планировщика ECS.

Я нашел эти ресурсы полезны, когда я читал об этом:

 Смежные вопросы

  • Нет связанных вопросов^_^