使用本地计算机作为主机将 EC2 实例设置为 Celery Workers

Posted

技术标签:

【中文标题】使用本地计算机作为主机将 EC2 实例设置为 Celery Workers【英文标题】:Setting up EC2 instances as Celery Workers with a local computer as the host 【发布时间】:2011-09-21 12:20:49 【问题描述】:

类似于我的问题here 我正在尝试设置多个亚马逊 EC2 实例来执行一些多处理。我正在考虑使用 Celery 来管理工人。有没有人让 celery 以本地计算机作为主机在 EC2 实例上工作?

有没有人有任何好的建议、教程、建议等可能会有所帮助?我使用 celery 在 django 中执行了一些简单的异步进程,但没有达到这种规模(worker 和 hosts 在同一台机器上)。

而且大部分处理都是“基于文件”的(即读取和写入文件)...你认为用 celery 腌制和传输文件内容会更好吗(大多数文件是 1-2kb text) 或跨 EC2 实例镜像文件系统,然后让工作人员返回结果(通常是 0.5 kb 的文本)。

【问题讨论】:

我已经在 Celery-users 邮件列表中询问了the same question,我仍在等待答复。你能评论一下你最终是如何决定这样做的吗? @andres.riancho 只需复制您的应用实例,让所有副本在您的消息代理上监听。您可以在应用程序机器上禁用 celery 并在所有其他副本上运行 celery。这样,您的应用实例会将其放入队列中,副本将使用任务 【参考方案1】:

我已将 Amazon SQS 用于 Amazon EC2 的任务管理。这是非常可扩展的解决方案。 Boto 是我发现的用于管理亚马逊服务的最佳库。

为了存储大量小文件,您可以使用 MongoDB GridFS,它将允许您存储本地文件的演出。我使用 MongoDB 并在此类任务中获得了完美的性能。唯一的问题——32 位架构上的 MongoDB 非常有限。亚马逊有微实例和支持 64 个的大型实例。微实例受 CPU 和内存的限制,如果不适合您的需要,则需要设置大型实例,这可能会花费很多。

我的任务中的微型实例能够每天读取/写入多达 10 个演出,没有任何问题。

还请查看 Spot 实例。它的成本比按需低约 3 倍,您可能会发现它们非常适合后台处理。

【讨论】:

以上是关于使用本地计算机作为主机将 EC2 实例设置为 Celery Workers的主要内容,如果未能解决你的问题,请参考以下文章

ec2 作为堡垒主机及其性能

如何将 datastax 开发中心连接到亚马逊 EC2 实例中的远程集群?

将EC2实例公共IP放入Ansible主机文件中

如果我们使用默认 VPC 和安全组将公开访问设置为“否”,为啥 EC2 实例无法访问 RDS 实例?

为 EC2 实例创建签名证书时如何防止循环依赖?

如何使用 Amazon EC2 实例为生产设置 node.js process.env 变量?