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

标签 rabbitmq haproxy

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

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

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

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

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

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

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

  • 这样做的最佳方法是什么?

    最佳答案

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

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

    首先将其设置为维护模式没有任何具体的缺点,因此我不会亲自考虑其他选项。

    关于RabbitMQ 集群 - 更新负载平衡集群中节点的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42422439/

    相关文章:

    redirect - Openshift 上的 HAProxy https 在非本地设备上以重定向循环结束

    load-balancing - 如何创建 float IP 并使用它来配置 HAProxy

    ssl-certificate - HAproxy:如何安装中间 SSL 证书

    haproxy - selinux 拒绝 haproxy 连接?

    node.js - 生产者和消费者之间的 RabbitMQ 消息延迟

    java - 使用 Spring AMQP 自动恢复 AMQP 连接期间的 AlreadyClosedException

    ssl - HAProxy 负载均衡器 : Peer's Certificate issuer is not recognized

    perl - 如何使用 Perl 的 AnyEvent::RabbitMQ 正确断开与 RabbitMQ 的连接?

    node.js - 错过客户端的心跳,超时 : 30s - RabbitMQ

    node.js - 如何使用 MongoDB 和 RabbitMQ 在 Docker 中运行 NodeJS?