我刚接触过dotcloud,对多个服务如何协同工作感到困惑。
我的yaml构建文件是:
www:
type: python
db:
type: postgresql
worker:
type: python-worker
broker:
type: rabbitmq我的监督文件包含启动django芹菜和celerycam的命令。
当我把我的代码推到我的应用程序中时,我可以看到两家www & worker服务都启动了自己的芹菜和芹菜凸轮实例,例如日志文件也会有所不同。这是有意义的(虽然在IMO的dotcloud文档中并不十分清楚--文档讨论了如何设置工人服务,而不是如何将其与其他服务结合起来),但确实提出了如何配置一个应用程序的问题,其中python服务主要服务于web页面,而python工作者服务则处理后台任务,例如: celery。
dotcloud文档守护进程提到了这一点:
“但是,您应该知道,当您缩放应用程序时,cron任务将在所有缩放的实例中被调度--这可能不是您所需要的!因此,在许多情况下,使用单独的服务仍然更好。” 类似地,许多(非工作人员)服务已经运行了Supervisor,因此您可以在这些服务中运行额外的后台作业。同样,请记住,如果您缩放应用程序,这些后台作业将在多个实例中运行。此外,如果将后台作业添加到web服务中,它将获得更少的资源来服务页面,您的性能将受到重大影响。“
如何将dotcloud &您的应用程序配置为只在一个服务上运行and服务器,以及在员工服务上运行后台任务?您是通过增加芹菜中的并发设置(并垂直缩放一个服务)、增加额外的员工服务,还是同时增加两者来扩展员工?
您会这样做吗?首先,use服务器服务不必在处理后台任务时使用资源,其次,您可以独立于use服务器服务扩展员工服务吗?
发布于 2012-08-13 22:40:16
有两个窍门。首先,您可以使用不同的接近者来区分它们将运行的代码:
www:
type: python
approot: frontend
# ...
worker:
type: python-worker
approot: backend
# ...其次,由于您的后安装脚本对于每个审批者来说是不同的,所以您可以将一个文件复制出来,从而成为该特定服务的正确supervisord.conf。
您可能还想看看django-celery的dotCloud教程和示例代码。
/Andy
https://stackoverflow.com/questions/11912631
复制相似问题