С появлением докеров и служб планирования и оркестровки, таких как Amazon ECS, я пытаюсь определить оптимальный способ развертывания моего API Node. В стороне от Docker и ECS я хотел воспользоваться библиотекой кластера Node, чтобы изящно обрабатывать сбой приложения Node в случае асинхронной ошибки, как предложено в документации, создав мастер-процесс и несколько рабочих процессоров.
Одним из преимуществ кластерного подхода, помимо грамотной обработки ошибок, является создание рабочего процессора для каждого доступного ЦП. Но имеет ли это смысл в мире докеров? Имеет ли смысл иметь несколько процессов Node, запущенных в одном контейнере докеров, который будет масштабироваться в кластер экземпляров EC2 в ECS?
Без кластерного подхода Node я бы потерял способность изящно обрабатывать ошибки, поэтому я думаю, что, как минимум, я должен запустить мастер и один рабочий процесс на контейнер докеров. Я все еще запутался относительно того, сколько CPU определит в определении задачи для ECS. В документации ECS говорится о каждом экземпляре контейнера, имеющем 1024 единицы на процессор; но это не то же самое, что и вычислительные единицы EC2, не так ли? И с учетом сказанного мне нужно было бы выбрать типы экземпляров EC2 с соответствующим количеством vCPU для достижения этого права?
Я понимаю, что для достижения оптимальной конфигурации может потребоваться некоторый уровень бенчмаркинга моего конкретного приложения API Node, но было бы замечательно иметь представление о том, с чего начать. Может быть, есть некоторые исследования/исследования, которые мне нужно сделать? Любые указатели, которые будут вести меня по пути или рекомендациям, будут наиболее ценными!
Изменить: повторить мои конкретные вопросы:
-
Имеет ли смысл запустить кластер мастеров/рабочих, описанный здесь внутри контейнера докера, чтобы добиться изящного сбоя?
-
Имеет ли смысл использовать почти идентичный код, как описано в документах кластера, для "масштабирования" доступных процессоров через
require('os').cpus().length
? -
Что означает Amazon в документации для определений задач ECS, где указано для параметра
cpus
, что acontainer instance has 1024 units per CPU
? И что было бы хорошей отправной точкой для этой настройки? -
Что было бы хорошей отправной точкой для типа экземпляра для кластера ECS, предназначенного для обслуживания API Node на основе вышеизложенного? И как влияют на доступные vCPU на предыдущие вопросы?