使用Amazon EC2的Autoscale Python Celery

时间:2014-12-12 10:06:23

标签: python amazon-web-services amazon-ec2 celery taskmanager

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

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

我需要设置系统,如果我们向芹菜发送太多任务,亚马逊会自动设置一个新的EC2实例来运行更多的工作人员并平衡这些工作人员的负载。

我所知道的服务是亚马逊自动调节和亚马逊负载均衡服务,这似乎正是我想要使用的,但我不确定配置Celery的最佳方式是什么。

认为我应该有一个芹菜"主人"这是收集所有任务和一些执行它们的芹菜工人。随着任务数量的增加,我想增加更多的工作人员。自动缩放的工作方式(通过服用芹菜服务器的AMI)我认为我目前克隆了Master和工作人员,这似乎不是我想做的事情。

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

在任何答案(或指向教程的链接!)中尽可能多的详细信息将非常受欢迎,因为大多数教程或建议似乎都假设我目前没有大量的知识!

1 个答案:

答案 0 :(得分:6)

您无需使用master-worker体系结构即可实现此功能。如果我正确理解您的问题,您希望能够根据队列大小进行扩展。我会说如果你有以下步骤会更容易

  1. 为经纪人设置elasticache / sqs(因为你在aws)
  2. 对于自定义缩放 - 使用periodic task之类的东西检查队列大小的this或者在CPU使用率很高时添加amazon自动缩放以添加/删除计算机(假设这是一个足够好的指示加载)。此外,使用--autoscale启动工作人员,以便正确反映CPU使用情况。