【问题标题】:RabbitMQ cluster - best practice for updating a node in a load balanced cluster?RabbitMQ 集群 - 更新负载平衡集群中节点的最佳实践?
【发布时间】:2017-02-23 17:26:52
【问题描述】:

总结:在负载平衡集群中更新节点的最佳做法是什么?

我们在 ha 代理负载平衡器后面使用 RabbitMQ 集群来支持我们的客户端轻松集群,as suggested in the RabbitMQ docs

尽管文档建议这样做,但他们没有描述从集群中删除节点以进行升级并将其放回的最佳方法。

这是我认为我们应该使用的过程:

  1. 通过在节点本身上运行 rabbitmqctl stop_app 从集群中删除节点,并等待它关闭
  2. 在 haproxy 中将节点置于维护模式
  3. 执行维护工作
  4. 将节点重新加入集群,确认它重新加入并同步。
  5. 在 haproxy 中从维护模式中删除节点

但我已经建议我们应该先从 ha 代理中删除它,基本上交换上面的步骤 1 和 2

这是另一个团队成员建议的流程:

  1. 在 haproxy 中将节点置于维护模式
  2. 通过在节点本身上运行 rabbitmqctl stop_app 从集群中删除节点,然后等待它关闭
  3. 执行维护工作
  4. 将节点重新加入集群,确认它重新加入并同步。
  5. 在 haproxy 中从维护模式中删除节点

最好的方法是什么?

【问题讨论】:

    标签: rabbitmq haproxy


    【解决方案1】:

    对我来说,显而易见的方法是告诉你 haproxy 你想停止向服务器发送请求,然后停止服务器本身,而不是相反。

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

    首先将其设置为维护模式并没有什么特别的缺点,因此我不会亲自考虑其他选项。

    【讨论】:

    • 嗯......好点......我想我不相信haproxy的“维护”模式很好地关闭连接,同时告诉rabbitmq中的节点@ 987654322@ 确实很好地关闭了连接和节点。你知道 haproxy 是否应该将节点设置为“DRAIN”而不是“MAINT”?
    • @BradParks 你确实可以做到!在邻居那里看到这个问题:serverfault.com/questions/705991/…(请注意,这是一个网络服务器,不是 rabbitmq,但同样适用)
    • 感谢您的链接!我正在阅读它,但似乎能够找到关于 haproxy 的 MAINT 和 DRAIN 之间差异的官方信息很少。我会继续寻找!
    猜你喜欢
    • 2021-05-11
    • 1970-01-01
    • 2017-06-19
    • 2011-11-11
    • 2016-09-08
    • 2012-04-16
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多