В чем разница между задачей и сервисом в AWS ECS?

Похоже, что можно запустить задачу или службу на основе определения задачи. Каковы различия и сходства между задачей и обслуживанием? Есть ли ключ к тому, что можно указать "Группу задач" при создании Задачи, но не Службу? Являются ли Задача и Служба иерархически равными экземплярами Определения Задачи, или Служба состоит из Задач?

Ответы

Ответ 1

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

A Задача создается при непосредственном запуске задачи, которая запускает контейнер (контейнеры) (определенные в определении задачи) до тех пор, пока они не будут остановлены или не выйдут сами по себе, после чего они не будут заменен автоматически. Выполнение задач напрямую идеально подходит для коротких рабочих заданий, возможно, в качестве примера того, что было выполнено с помощью CRON.

A Сервис используется, чтобы гарантировать, что у вас всегда есть определенное количество задач, выполняемых в любое время. Если контейнер задачи выходит из-за ошибки или основной экземпляр EC2 не работает и заменяется, служба ECS заменит неудачную задачу. Вот почему мы создаем Clusters, чтобы у Сервиса было много ресурсов с точки зрения использования портов CPU, Memory и Network. Для нас не имеет значения, какие экземпляры задач запускаются до тех пор, пока они запускаются. Конфигурация службы ссылается на определение задачи. Служба отвечает за создание Заданий.

Службы обычно используются для приложений с длительным сроком выполнения, таких как веб-серверы. Например, если я развернул свой веб-сайт, работающий на Node.JS в Орегоне (us-west-2), я бы хотел сказать, что по крайней мере три задачи, выполняющиеся в трех зонах доступности (AZ) ради высокой доступности; если не удастся, у меня есть еще два, и неудачный будет заменен (прочитайте это как самовосстановление!). Создание службы - это способ сделать это. Если бы у меня было 6 экземпляров EC2 в моем кластере, 2 за AZ, Служба будет автоматически балансировать Задачи по зонам, насколько это возможно, при одновременном рассмотрении CPU, памяти и сетевых ресурсов.

UPDATE:

Я не уверен, что это помогает думать об этих вещах иерархически.

Еще один очень важный момент заключается в том, что Сервис может быть настроен на использование балансировщика нагрузки, так что, поскольку он создает Задачи, то есть он запускает контейнеры, определенные в Defence Task - Служба автоматически регистрирует экземпляр EC2 контейнера с помощью балансировщик нагрузки. Задачи не могут быть настроены на использование балансировщика нагрузки, только сервисы могут.

Ответ 2

Прекрасно объяснил на словах @talentedmrjones. Картинка ниже поможет вам легко это представить :)

Cluster, Service, EC2 Instance and Task in action