首页 文章

使用Amazon EC2的Autoscale Python Celery

提问于
浏览
8

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

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

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

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

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

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

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

1 回答

  • 6

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

    • 为经纪人设置elasticache / sqs(因为你在aws)

    • 对于自定义缩放 - 使用this检查队列大小的periodic task或者在CPU使用率较高时添加/删除机器时添加/删除机器(假设这是一个足够好的负载指示) . 此外,使用--autoscale启动工作程序,以便正确反映CPU使用情况 .

相关问题