RabbitMQ如何更改节点离开集群时未迁移的ha队列的所有权

xe55xuns  于 2022-11-08  发布在  RabbitMQ
关注(0)|答案(1)|浏览(139)

我有一个三节点的RabbitMQ集群(Ubuntu 14.04.3上的版本3.4.4),大约有80个队列,其中40个是ha队列(策略{“ha-mode”:“exactly”,“ha-params”:3})。三节点集群增加到5个节点。当它增加到5个节点时,队列按预期重新平衡,因此一些队列将所有权转移到新的集群节点。
几个小时后,通过在两个新节点上执行以下命令序列,将新节点从集群中删除:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

其余三个节点上的cluster_status都一致,并且如预期的那样仅显示其余三个节点。

Cluster status of node 'rabbit@prod-api-02' ...
[{nodes,[{disc,['rabbit@prod-api-01',
                'rabbit@prod-api-02',
                'rabbit@prod-api-03']}]},
 {running_nodes,['rabbit@prod-api-03',
                 'rabbit@prod-api-01',
                 'rabbit@prod-api-02']},
 {cluster_name,<<"rabbit@localhost.localdomain">>},
 {partitions,[]}]

但是,群集处于这样一种状态:群集的三个节点认为在扩展群集时移动了所有权的两个ha队列仍由不再属于群集的节点拥有,因此认为它们处于“关闭”状态。此外,它不再显示与队列或从属节点关联的策略。

rabbitmqctl list_queues name state policy pid slave_pids
production-process-queue    down    <rabbit@prod-rabbit-01.0.0.0>
delete_unused_things_queue  down    <rabbit@prod-rabbit-01.0.0.0>

尝试删除这两个队列会返回一个错误,说明主节点已关闭或无法访问。
以前有人遇到过这种问题吗?有没有办法将这两个队列的所有权重新更改为剩余的群集节点之一,或者有没有办法删除它们?我不需要保留队列内容。

2wnc66cl

2wnc66cl1#

也有类似的问题。
如果对两个离开的节点分别使用forget_cluster_node命令,则可以移动主节点。请参阅https://www.rabbitmq.com/rabbitmqctl.8.html#forget_cluster_node。

相关问题