Dotcloud多项服务

时间:2012-08-11 06:45:07

标签: dotcloud

我是dotcloud的新手,对多个服务如何协同工作感到困惑。

我的yaml构建文件是:

www:
  type: python
db:
  type: postgresql
worker:
  type: python-worker
broker:
  type: rabbitmq

我的supervisord文件包含启动django celery& amp; celerycam。

当我将代码推送到我的应用程序时,我可以看到www和&工人服务开始他们自己的芹菜和& celery cam,还有例如日志文件会有所不同。这是有道理的(虽然在IMO的dotcloud文档中没有明确说明 - 文档讨论了如何设置工作服务,但没有说明如何将其与其他服务相结合),但确实提出了如何配置应用程序的问题python服务主要服务于网页,而python工作服务则用于后台任务,例如:芹菜。

dotcloud documentation daemon提到了这一点:

  

“但是,在扩展应用程序时,您应该知道,   cron任务将安排在所有缩放的实例中 - 这是   可能不是你需要的!所以在很多情况下,它仍然会更好   使用单独的服务。

     

同样,很多(非工作者)服务已经运行Supervisor,所以   您可以在这些服务中运行其他后台作业。然后,   请记住,如果这些后台作业将在多个实例中运行   你扩展你的应用程序。此外,如果您添加后台作业   您的网络服务,它将获得更少的资源来提供页面和您的服务   表现将受到重创。“

如何配置dotcloud&您的应用程序只在一个服务上运行Web服务器,在工作服务上运行后台任务?您是通过增加芹菜中的并发设置(并垂直扩展一个服务),添加额外的工作服务,还是两者兼而有之,来扩展工作者?

您是否会这样做,以便首先Web服务器服务不必在处理后台任务时使用资源,其次,您可以独立于Web服务器服务扩展工作服务?

1 个答案:

答案 0 :(得分:2)

有两个技巧。 首先,您可以为www和worker服务使用不同的approots来分隔它们将运行的代码:

www:
  type: python
  approot: frontend
# ...
worker:
  type: python-worker
  approot: backend
# ...

其次,由于每个批准的postinstall脚本不同,您可以复制文件以成为该特定服务的正确supervisord.conf。

您可能还想查看django-celery的dotCloud教程和示例代码。

/安迪