Назад | Перейти на главную страницу

Как определить, какой узел RabbitMQ был остановлен последним

Общее правило для RabbitMQ для запуска кластера после выключения всех узлов - сначала запустить узел, который был остановлен последним во время процесса выключения, а затем запустить остальные. Допустим, процесс выключения инициируется каким-то внешним скриптом, который не сохраняет состояние, и из-за этого я не знаю явно, какой узел был остановлен последним, когда я хочу их запустить. Предоставляет ли RabbitMQ средства для определения того, какой узел был отключен последним?

Я нашел файл в /var/lib/rabbitmq/mnesia/<node> называется nodes_running_at_shutdown который, похоже, содержит информацию об узлах, работающих во время выключения. Основываясь на этом, я понял, что последний узел будет иметь только один узел в этом файле (самом), и я фактически подтвердил это эмпирически, однако мне не удалось найти никакой документации для этого файла, поэтому я не уверен, не соответствует ли это решение ' У него есть несколько угловых случаев (помимо очевидного недостатка, что он недокументирован и может измениться в любой момент).

Есть ли рекомендуемый способ узнать, какой узел был остановлен последним?

РЕДАКТИРОВАТЬ: Мой вопрос больше о том, можем ли мы получить состояние из самого RabbitMQ без внешних инструментов, которые сохраняли бы состояние между процессами остановки и запуска.

Если вы отправляете данные (статистику, журналы и т. Д.) Во внешнюю службу (graphite / collectd / ganglia / etc или logstash / splunk / syslogd), вы можете посмотреть (или еще лучше, запросить) один из них для хоста последние отправленные данные.