我需要通过命令行删除所有不在RabbitMQ集群中运行的节点
我已经尝试过rabbitmqctl forget_cluster_node
。但不确定如何获取未运行节点的列表。
我在rabbitmqctl cluster_status
的输出中看到了所有节点和running_nodes。有人可以帮我解析它,让我知道是否还有其他解决方案可以轻松地从群集中删除节点。
预先感谢!
答案 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