芹菜如何发现新的节点?

我在Docker运行Celery和RabbitMQ Gunicorn。

我的问题是:我明白,芹菜是专为分布式处理。 我没有看到任何文档,假设我在同一局域网上有几台机器/节点,他们是如何发现彼此的? RabbitMQ扮演一个angular色吗? 芹菜实例是否发现彼此? 有没有合适的主机列表? 如果是这样,我该如何编辑它?

另外,假设我将只使用一个节点来处理HTTP请求,那么是否仍然需要在所有节点上运行gunicorn? 我这样问,是因为在起死回生的起动命令中,有一个工人数量的设置。 而且,该设置仅适用于该节点,还是作为所有连接节点的最大总数?

编辑:第一个答案后,我开始在这个工作。 似乎我需要某种networking设置,无论是群集还是桥接等。我应该澄清,我使用docker-compose来提出解决scheme,并且我看到正常的swarm设置不起作用,而且我如果我去那条路线,使用稍微不同的东西。

要明确一点:我需要一种方法,可以在不同的主机上添加芹菜工人,让他们能够与“主”主机进行通信,从而增加系统的能力。 如果有人可以提供一个清晰的过程来实现这个或这样的链接,这将是最有帮助的。

我希望我已经明确expression了,请让我知道如果您需要任何进一步的信息。

谢谢!

我明白,芹菜是专为分布式处理。 我没有看到任何文档,假设我在同一局域网上有几台机器/节点,他们是如何发现彼此的? RabbitMQ扮演一个angular色吗? 芹菜实例是否发现彼此? 有没有合适的主机列表? 如果是这样,我该如何编辑它?

Celery是一个分布式任务队列,使用RabbitMQ等消息代理系统。

实际上,所有的芹菜工人都会连接一个共享队列,比如RabbitMQ。 主人通过将其推入队列来派遣工作。 连接到队列的工作人员也将工作从队列中拉出,然后尝试执行。 一旦完成(成功或其他),它将把结果推回队列,然后主机可以查询。

鉴于这种架构,你不需要添加主机列表,他们“自动检测”的工作。 你只需要启动它们,并确保他们可以与队列交谈。

从另外一个答案稍微更详细的解释。

用图表链接到架构 。

另外,假设我将只使用一个节点来处理HTTP请求,那么是否仍然需要在所有节点上运行gunicorn? 我这样问,是因为在起死回生的起动命令中,有一个工人数量的设置。 而且,该设置仅适用于该节点,还是作为所有连接节点的最大总数?

不,您不需要在所有节点上运行guicorn,只需要通过python为HTTP请求提供服务即可。 芹菜工人不需要guicorn。 guicorn中的工作者设置是指HTTP侦听器池中的工作者数量。 这是独立的,独立的,不受芹菜使用的工人的影响。