如何从Rabbitmq集群中删除未运行的节点

时间:2019-09-22 19:57:11

标签: rabbitmq

我需要通过命令行删除所有不在RabbitMQ集群中运行的节点 我已经尝试过rabbitmqctl forget_cluster_node。但不确定如何获取未运行节点的列表。

我在rabbitmqctl cluster_status的输出中看到了所有节点和running_nodes。有人可以帮我解析它,让我知道是否还有其他解决方案可以轻松地从群集中删除节点。

预先感谢!

1 个答案:

答案 0 :(得分:0)

自己弄清楚

# Remove nodes that are not running from the cluster
nodes=($(egrep -o '[a-z0-9@-]+' <<< $(sudo rabbitmqctl cluster_status --formatter json | jq .nodes.disc)))
running_nodes=($(egrep -o '[a-z0-9@-]+' <<< $(sudo rabbitmqctl cluster_status --formatter json | jq .running_nodes)))

for node in ${nodes[@]}
do
  match_count=0
  for rnode in ${running_nodes[@]}
  do
    if [ "${node}" == "${rnode}" ]
    then
        match_count=1
        break
    fi
  done
  if [ $match_count == 1 ]
    then
        continue
    else
      sudo rabbitmqctl forget_cluster_node $node
    fi
done