Общее правило для RabbitMQ для запуска кластера после выключения всех узлов - сначала запустить узел, который был остановлен последним во время процесса выключения, а затем запустить остальные. Допустим, процесс выключения инициируется каким-то внешним скриптом, который не сохраняет состояние, и из-за этого я не знаю явно, какой узел был остановлен последним, когда я хочу их запустить. Предоставляет ли RabbitMQ средства для определения того, какой узел был отключен последним?
Я нашел файл в /var/lib/rabbitmq/mnesia/<node>
называется nodes_running_at_shutdown
который, похоже, содержит информацию об узлах, работающих во время выключения. Основываясь на этом, я понял, что последний узел будет иметь только один узел в этом файле (самом), и я фактически подтвердил это эмпирически, однако мне не удалось найти никакой документации для этого файла, поэтому я не уверен, не соответствует ли это решение ' У него есть несколько угловых случаев (помимо очевидного недостатка, что он недокументирован и может измениться в любой момент).
Есть ли рекомендуемый способ узнать, какой узел был остановлен последним?
РЕДАКТИРОВАТЬ: Мой вопрос больше о том, можем ли мы получить состояние из самого RabbitMQ без внешних инструментов, которые сохраняли бы состояние между процессами остановки и запуска.
Если вы отправляете данные (статистику, журналы и т. Д.) Во внешнюю службу (graphite / collectd / ganglia / etc или logstash / splunk / syslogd), вы можете посмотреть (или еще лучше, запросить) один из них для хоста последние отправленные данные.