【问题标题】:Multiple broker machine rabbitmq configuration, how does HA work?多broker机器rabbitmq配置,HA如何工作?
【发布时间】:2014-10-08 23:27:57
【问题描述】:

我试图弄清楚 HA 是如何工作的。 (高可用性队列)

我当前的配置是:每台机器都有多个 celery worker 并指向自己作为代理。由于 HA,每台机器都可以这样做,而不是指向一台代理机器;这样一来,任何一台机器上的负载都会减少,因为它们都是代理并且拥有相同队列的副本。

我的问题是,我的上述逻辑是否正确?或者是否所有工作人员都需要指向一台代理机器而不考虑 HA?

【问题讨论】:

    标签: rabbitmq celery django-celery


    【解决方案1】:

    如果您查看了 HAclustering 并确保队列相互镜像,那么您所做的应该没问题。但是,在您运行工作程序的每台服务器上运行它似乎有点低效。

    另一种选择是在几台服务器上运行队列以实现高可用性,并让其他运行工作人员的服务器指向它们。但是由于 celery worker 配置只能指向一个代理 url,因此您可能需要使用所有 worker 都指向的负载均衡器来解决这个问题。这是我在过去几年中对芹菜的 RabbitMQ HA 所了解的最好的内容。

    【讨论】:

    • 是的,我认为如果每台服务器都有一个复制队列,它会大大降低应用程序的速度,但我不知道减速会有多大。 celery worker 配置只能指向一个代理 url 这一事实一直是我面临的主要挑战。我在groups.google.com/forum/#!topic/celery-users/i87kIvHn6gg 中读到 BROKER_URL 可以是代理列表(链接中的倒数第二个响应),但无法解决。你有什么运气吗?
    • 另外,有没有办法从rabbitmqctl(或其他方法)判断一个节点是否是HA节点?
    • @jeffrey,我最后一次看到该线程时,@asksol 关于多个经纪人的响应不存在。我指的是 OP 关于使用负载平衡器的观察。我没有尝试为 BROKER_URL 列出多个 url 的方法。如果我能让它工作,我会在这里发帖。知道工人如何选择使用哪个经纪人会很有趣。 rabbitmqctl cluster_status 给出集群中的节点。这是否回答了您关于如何判断节点是否为 HA 节点的问题?还是你的意思是别的?
    • 感谢 ksrini,我自己尝试了 list 方法,但无法正常工作。 rabbitmqctl cluster_status 给出了集群中的所有节点,还告诉了哪些是 ram 或 disc,但没有关于哪些节点是 HA 节点的信息。我正在尝试从我的一台服务器中找出哪个节点是 HA 节点,以便它可以选择要连接的节点(它必须是 HA 节点!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2014-02-24
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 2013-02-08
    相关资源
    最近更新 更多