Подходит ли Fargate для независимых контейнеров с низким уровнем использования ресурсов?

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

Мой сценарий: у меня есть несколько независимых контейнеров. Каждый контейнер представляет веб-сайт. Каждый контейнер должен работать все время, но может видеть длительные периоды бездействия (например, нулевая загрузка ЦП). Для иллюстрации предположим, что у меня есть 10 контейнеров, и для каждого контейнера требуется до 200 МБ ОЗУ и до 1 ВЦП. Давайте также предположим, что мне нужно всего 2vCPU для обработки комбинированной нагрузки от всех 10 контейнеров (так как они не видят высокую нагрузку одновременно).

Вариант 1 Fargate: я создаю отдельную задачу для каждого контейнера: (2 ГБ, 1 ВЦП) x 10 (2 ГБ - минимальный объем ОЗУ для 1 ВЦП).

Вариант 2 Fargate: я создаю одну задачу со всеми контейнерами: (2ГБ, 2vCPU).

Опция EC2: я создаю задачу для контейнера, все сопоставленные одному экземпляру EC2.

Если я правильно понимаю, Fargate Option 2 намного дешевле, чем Fargate Option 1, потому что я знаю, что мне нужно только максимум 2vCPU. Но Вариант 2 намного менее гибок, так как это задачи, которые останавливаются / запускаются / масштабируются, и я хочу рассматривать свои контейнеры как независимые друг от друга (например, независимо останавливать / запускать / масштабировать).

Более того, если я правильно понимаю, опция EC2 - это единственный способ получить как гибкость, связанную с выполнением задачи для каждого контейнера, так и оплату ресурсов, которые мне действительно нужны.

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

Правильно ли мое понимание?

2 ответа

Решение

Это верно, Fargate стоит дороже, чем EC2 для того же количества vCPU/RAM.

Например:

  • Самый маленький контейнер Fargate с 0,25 vCPU и 0,5 ГБ оперативной памяти стоит 0,019 долл. США в час, то есть около 14 долл. США в месяц на контейнер.

  • Если вам требуется 1 vCPU, то минимальный объем оперативной памяти составляет 2 ГБ (см. Раздел "Поддерживаемые конфигурации Fargate"), и цена за контейнер неожиданно составляет около 55 долларов США в месяц. В вашем случае раз 10 заданий составляет $550/ месяц.

  • С другой стороны, если вы уверены, что можете сжать все это на одном t3.small (2 vCPU, 2 ГБ ОЗУ), это будет стоить вам 0,0208 долларов в час, что составляет около 15 долларов в месяц. Даже если вам понадобится 2 или 3 экземпляра t3.small для поддержки вашей нагрузки, это все равно намного дешевле, чем Fargate.

  • Если вы объединяете все свои контейнеры в одну задачу Fargate (как предложено в вашем варианте 2), это все еще дороже, чем использование EC2 ECS, плюс сложности с наличием нескольких независимых контейнеров в одной задаче. Это не стоит хлопот.

Итак, подведем итоги - если вы хотите запускать свои контейнеры 24x7, а они не используются полностью, вам будет гораздо лучше запускать их в кластере ECS на базе EC2.

С Fargate вы платите премию за гибкость.

Если ваши контейнеры запускаются только на короткое время для выполнения задачи, а затем выходят из нее, или если они масштабируются по мере необходимости, вам будет намного проще запускать их в Fargate - вам не нужно будет увеличивать и уменьшать базовый EC2 кластер для поддержки нагрузки.

Во многих случаях лучше работать на Fargate, даже если он дороже для каждого vCPU/RAM. Для некоторой обработки мы раскручиваем партии из сотен контейнеров одновременно несколько раз в день, и каждый контейнер работает всего около 10 минут. Если бы нам пришлось масштабировать кластер EC2/ECS перед каждым запуском, подождать, пока он установится, справиться со сбоями, а затем запустить наше пакетное задание и затем снова уменьшить его, издержки будут достаточно высокими, а наша пакетная обработка займет гораздо больше времени.,

Здесь Фаргейт прекрасно работает для нас. Я бы не стал использовать его для постоянно включенного сервиса.

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

Вы также можете использовать EKS (Elastic Kubernetes Service) вместо ECS.

Кубернеты дают еще больше контроля над пакетами, услугами, объемами и тому подобным. Однако не уверен, что это дешевле, чем ECS, а может и нет.

Другие вопросы по тегам