使用Amazon EC2自动缩放Python Celery

8

我有一个Celery任务管理器来处理公司的分析数据。

任务管理器和工作进程托管在Amazon EC2 Linux服务器上。

我需要设置系统,使得如果我们向Celery发送过多任务,Amazon会自动设置新的EC2实例以运行更多工作者,并在这些工作者之间平衡负载。

我知道存在的服务是Amazon Autoscale和Amazon Load balancing服务,它们似乎正是我想使用的,不过,我不确定如何最好地配置Celery。

我认为我应该有一个Celery“主人”来收集所有任务和一些执行任务的Celery工作者。随着任务数量的增加,我想添加更多工作者。Autoscale的工作方式(通过获取Celery服务器的AMI)似乎包括克隆主人以及工作者,这似乎不是我想做的事情。

我该如何组织这样的系统以实现我的最终目标,即使用Celery来管理任务和Amazon Web Service来托管计算,实现灵活的自动缩放任务管理。

如果回答中提供尽可能多的详细信息(或链接到教程!),那将非常感谢,因为大多数教程或建议似乎假定了我目前没有的大量知识!

1个回答

7
你不需要主从架构来使其工作。如果我理解你的问题正确,你想要根据队列大小进行扩展。我建议你按照以下步骤操作会更容易:
  1. 为经纪人设置elasticache/sqs(因为您在aws中)
  2. 对于自定义缩放 - 使用类似this的东西检查队列大小的定期任务periodic task,或者添加Amazon自动缩放以在CPU使用率高时添加/删除机器(假设这足以表明负载)。此外,使用--autoscale启动工作程序,以便正确反映CPU使用情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接