我需要通过命令行删除 RabbitMQ 集群中未运行的所有节点。
我尝试过rabbitmqctlforget_cluster_node
,但我不确定如何获取非运行节点的列表。
我在rabbitmqctl cluster_status 的输出中看到了所有节点和running_nodes。有人可以帮我解析它并让我知道是否有其他解决方案可以轻松地从集群中删除节点?
最佳答案
我自己想出来的
# 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
关于rabbitmq - 如何从 RabbitMQ 集群中删除非运行节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58052924/