Сельдерей Бит на Amazon ECS

Я использую Amazon Web Services ECS (Elastic Container Service). Мое определение задачи содержит Application + Redis + Celery, и эти контейнеры определены в определении задачи. Автоматическое масштабирование установлено, поэтому на данный момент существует три экземпляра с одинаковой зеркальной инфраструктурой. Тем не менее, существует спрос на экземпляр Celery Beat для запланированных задач, поэтому Celery Beat был бы отличным инструментом, поскольку Celery уже находится в моей инфраструктуре.

Но вот проблема: если я добавлю контейнер Celery Beat вместе с другими контейнерами (добавим его в определение задачи), он будет зеркально отражен, и несколько экземпляров будут выполнять одни и те же запланированные задачи в одно и то же время. Что бы решить эту проблему инфраструктуры? Должен ли я создать отдельный сервис?

2 ответа

Вы можете использовать стратегию размещения задач ECS, чтобы разместить задачу Celery Beat и выбрать "Одна задача на хост". Удостоверьтесь, чтобы выбрать состояние Желания к "1". Таким образом, ваша задача об ударе сельдерея будет выполняться только в 1 контейнере в вашем кластере.

Ссылка: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html

Желаемая задача - это количество задач, которые вы хотите запустить в кластере. Вы можете установить "Количество задач" при настройке службы или в разделе "Выполнить задачу". Вы можете ссылаться на ссылки ниже для ссылок.

Настройка сервиса:

Ссылка: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service.html

Выполнить задачу:

Ссылка: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html

Дайте мне знать, если найдете какие-либо проблемы с ним.

Мы используем single-beat чтобы решить эту проблему, она работает как шарм:

Single-beat - это симпатичное небольшое приложение, которое обеспечивает запуск только одного экземпляра вашего процесса на ваших серверах.

Такие, как celerybeat (или какой-либо тип ежедневного почтового отправителя, средство очистки потерянных файлов и т. Д.) Должны быть запущены только на одном сервере, но если этот сервер выходит из строя, вы можете запустить его на другом сервере и т. Д.

Вы все равно должны установить количество желаемых задач для службы на 1.

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