RabbitMQ集群-更新负载平衡集群中节点的最佳实践?

RabbitMQ集群-更新负载平衡集群中节点的最佳实践?,rabbitmq,haproxy,Rabbitmq,Haproxy,摘要:在负载平衡集群中更新节点的最佳实践是什么? 我们在ha代理负载平衡器后面使用RabbitMQ集群,为我们的客户机支持轻松集群 尽管文档中提出了这一点,但它们并没有描述从集群中删除节点进行升级并将其放回集群的最佳方法 以下是我认为我们应该使用的流程: 通过在节点本身上运行rabbitmqctl stop_app从集群中删除节点,并等待其关闭 在haproxy中将节点置于维护模式 执行维护工作 将节点重新加入群集,确认它重新加入并同步 在haproxy中从维护模式中删除节点 但我有人建议我们应

摘要:在负载平衡集群中更新节点的最佳实践是什么?

我们在ha代理负载平衡器后面使用RabbitMQ集群,为我们的客户机支持轻松集群

尽管文档中提出了这一点,但它们并没有描述从集群中删除节点进行升级并将其放回集群的最佳方法

以下是我认为我们应该使用的流程:
  • 通过在节点本身上运行
    rabbitmqctl stop_app
    从集群中删除节点,并等待其关闭
  • 在haproxy中将节点置于维护模式
  • 执行维护工作
  • 将节点重新加入群集,确认它重新加入并同步
  • 在haproxy中从维护模式中删除节点
  • 但我有人建议我们应该首先从ha代理中删除它,基本上交换上面的步骤1和步骤2

    以下是另一位团队成员建议的流程:
  • 在haproxy中将节点置于维护模式
  • 通过在节点本身上运行
    rabbitmqctl stop_app
    从集群中删除节点,并等待其关闭
  • 执行维护工作
  • 将节点重新加入群集,确认它重新加入并同步
  • 在haproxy中从维护模式中删除节点

  • 哪种方法最好?

    对我来说,最明显的方法是告诉您haproxy您想停止向服务器发送请求,然后停止服务器本身,而不是反过来

    我很好奇,为什么您要先停止服务器,然后再将其放入maint?如果您这样做,一些请求将在您的节点消失之前发送到您的节点。我相信你可以让haproxy重新发送那些未接来电;所以,最好的情况是你有一些慢一点的请求,最坏的情况是你有一些错过的请求


    <> Pi>在MeNT模式下,我没有看到具体的缺点,所以我不会亲自考虑其他选项。

    Hmmm.。说得好。。。我想对我来说,我不相信haproxy的“maint”模式能很好地关闭连接,而告诉rabbitmq中的节点停止应用程序确实能很好地关闭连接和节点。你知道haproxy是否应该将节点设置为“排水”而不是“维护”?@BradParks你确实可以这样做!在邻居处查看这个问题:(请注意,这是一个Web服务器,不是rabbitmq,但同样适用)感谢链接!我正在阅读这篇文章,但似乎能找到很少关于haproxy的MAINT和DRAIN之间区别的官方信息。我会继续找的!