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

时间:2017-02-23 17:26:53

标签: rabbitmq haproxy

摘要:更新负载均衡群集中的节点的最佳做法是什么?

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

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

以下是我认为应该使用的过程:

  1. 通过在节点本身上运行rabbitmqctl stop_app来从群集中删除节点,并等待它关闭
  2. 将节点置于haproxy的maint模式
  3. 执行maint work
  4. 将节点加入群集,确认它重新加入并同步。
  5. 从haproxy中的maint模式中删除节点
  6. 但我已经建议我们先将它从ha代理中删除,基本上交换上面的步骤1和2

    以下是其他团队成员建议的流程:

    1. 将节点置于haproxy的maint模式
    2. 通过在节点本身上运行rabbitmqctl stop_app来从群集中删除节点,并等待它关闭
    3. 执行maint work
    4. 将节点加入群集,确认它重新加入并同步。
    5. 从haproxy中的maint模式中删除节点
    6. 这是最好的方法吗?

1 个答案:

答案 0 :(得分:2)

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

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

我首先在maint模式下设置没有特别的缺点,所以我不会亲自考虑其他选项。