我们有一个包含 3 个节点的集群,目前我们有以下 HA(高可用性)镜像策略,如下所示:
计数值 2 表示 2 个副本:1 个队列领导者和 1 个队列镜像。换句话说:
NumberOfQueueMirrors = NumberOfNodes - 1
。
深入研究并有了更多的理解,我可以看到将 ha-params 指定为 2 将意味着总共 2 个节点将被镜像,因此其中一个节点不会被镜像!它与 all 不同,因为它会镜像到所有节点,这对我来说更有意义。
将 ha-mode 设置为 exactly 并将 ha-params 设置为 2,将在集群中的 2 个节点(包括领导者)上启用镜像/复制。如果在这种情况下添加新节点,复制将继续仅在 2 个节点上进行。
另一方面,将 ha-mode 设置为 all 时,将在集群中的所有节点上启用镜像/复制。在这里,如果将新节点添加到集群中,复制也将在新节点上开始发生。
您可以在此处阅读有关经典镜像队列的更多信息 - https://www.rabbitmq.com/docs/3.13/ha#mirroring-arguments
此外,经典镜像队列在最新版本的 RabbitMQ 中已被弃用。现代方法是使用 Quorum Queues - https://www.rabbitmq.com/docs/quorum-queues