Автомасштабирование Python Celery с помощью Amazon EC2

У меня есть диспетчер задач Celery, чтобы обработать некоторые цифры для аналитики компании.

Диспетчер задач и рабочие процессы размещаются на сервере Amazon EC2 Linux.

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

Насколько мне известно, существуют службы Amazon Autoscale и Amazon Load Balancing, которые кажутся именно тем, что я хочу использовать, однако я не уверен, как лучше всего настроить Celery.

Я думаю, что у меня должен быть "хозяин" сельдерея, который собирает все задачи и ряд рабочих сельдерея, которые их выполняют. По мере увеличения количества задач я хочу добавить больше рабочих. То, как работает автомасштабирование (путем получения AMI сервера сельдерея), я думаю, что в настоящее время я клонирую Мастера, а также рабочих, что кажется не тем, что я хочу делать.

Как мне организовать это для достижения моей конечной цели, которая заключается в гибком управлении задачами автоматического масштабирования с использованием Celery для управления задачами и Amazon Web Service для размещения вычислений.

Буду очень признателен за максимальное количество деталей в любых ответах (или ссылках на учебные пособия!), Поскольку большинство учебных пособий или советов, похоже, предполагают большое количество знаний, которых у меня в настоящее время нет!


person David McLean    schedule 12.12.2014    source источник


Ответы (1)


Вам не нужна архитектура master-worker, чтобы заставить это работать. Если я правильно понимаю ваш вопрос, вы хотите иметь возможность масштабирования в зависимости от размера очереди. Я бы сказал, что будет проще, если у вас есть следующие шаги

  1. Настройка elasticache/sqs для брокера (поскольку вы в аусе)
  2. Для пользовательского масштабирования — периодическая задача, которая проверяет размеры очередей, используя что-то вроде этого ИЛИ добавьте автомасштабирование amazon, чтобы просто добавить /remove машины при высокой загрузке ЦП (при условии, что это достаточно хороший показатель нагрузки). Кроме того, запустите рабочие процессы с -- autoscale, чтобы использование ЦП правильно отражается.
person Raghuram Onti Srinivasan    schedule 04.05.2015