RabbitMQ 在关闭所有节点后启动集群的一般规则是首先启动在关闭过程中最后停止的节点,然后启动其余节点。假设关闭过程是由一些不保存状态的外部脚本启动的,因此当我想要启动它们时,我无法明确知道最后停止的是哪个节点。RabbitMQ 是否提供了一些方法来找出最后关闭的节点?
我在一个/var/lib/rabbitmq/mnesia/<node>
名为的文件中找到了一个文件nodes_running_at_shutdown
,它似乎保存了有关关闭期间运行的节点的信息。基于此,我发现最后一个节点在该文件中只有一个节点(本身),而且我实际上通过经验证实了这一点,但是我找不到该文件的任何文档,所以我不确定这个解决方案是否没有一些极端情况(除了明显的缺点,即它没有文档记录并且随时可能发生变化)。
是否有任何推荐的方法来找出最后停止的节点?
编辑:我的问题更多的是关于我们是否可以从 RabbitMQ 本身检索状态,而无需使用外部工具来在停止和启动过程之间保持状态。
答案1
如果您要将数据(统计数据、日志等)发送到外部服务(graphite/collectd/ganglia/etc 或 logstash/splunk/syslogd),您可以查看(或者更好的是,查询)其中一个服务以查找最后发送数据的主机。