Работа сельдерея в ECS Fargate - PullRequest
0 голосов
/ 09 ноября 2018

Я работаю над проектом с использованием AWS ECS. Я хочу использовать Celery в качестве распределенной очереди задач. Celery Worker можно создать как тип EC2, но из-за большого количества времени, в течение которого экземпляр находится в состоянии ожидания, я думаю, что для AWS Fargate будет экономически эффективным запуск задания и немедленный выход.

У вас есть предложения по эффективному использованию Celery Worker в облаке AWS?

1 Ответ

0 голосов
/ 12 ноября 2018

Для запуска типа Fargate потребуется больше времени, чем для запуска EC2, потому что AWS выполняет все "основные задачи" за вас при запуске задачи, включая заведомо медленное подключение ENI и, вероятно, загрузку изображение из репо Docker. Сейчас нет соревнований, тип запуска EC2 быстрее с каждым разом.

Так что это действительно зависит от того, какую работу вы хотите, чтобы рабочие выполняли. Вы можете ожидать, что новая задача Fargate займет несколько минут , чтобы войти в состояние RUNNING по вышеуказанным причинам. Запуск EC2, с другой стороны, поскольку ENI уже установлен на вашем хосте, а образ уже загружен (в лучшем случае) или загружен в основном (вероятно, худший), очень быстро перейдет из режима ожидания в режим ожидания.


Используйте тип запуска EC2 для устойчивых рабочих нагрузок, используйте тип запуска Fargate для максимальной производительности

В настоящее время преобладает мудрость, часто обсуждаемая как фактор стоимости, поскольку Fargate не может воспользоваться преимуществами типичных механизмов экономии затрат EC2, таких как зарезервированные экземпляры и спотовые цены. Постоянно запускать Fargate дороже, чем EC2.

Чтобы быть ясным, совершенно нормально работать на 100% в Fargate (мы так делаем), но вы должны быть готовы принять минусы этого - медленное масштабирование и затраты.

Примечание вы можете запускать оба типа запуска в одном кластере. Кластеры в любом случае логичны, просто способ организовать ваши ресурсы.


Пример кластера

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

Тип запуска EC2 Сельдерейская служба

Запуск 1 типа запуска EC2 t3.medium (2vcpu / 4GB).

Мин. Заданий: 2, Желаемых: 4, Макс. Заданий: 4

Выполнение 4 задач сельдерея в 512/1024 в этом типе запуска EC2.

Нет правил масштабирования

Тип запуска Fargate Сельдерейская служба

Мин. Задач: 0, Желательно: (x), Макс. Задач: 32

Выполнение (x) задач сельдерея (то же определение задачи, что и для запуска EC2) в 512/1024

Добавить политики масштабирования для этой службы

...