使用本地计算机作为主机将 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的主要内容,如果未能解决你的问题,请参考以下文章
如何将 datastax 开发中心连接到亚马逊 EC2 实例中的远程集群?