Ошибка rabbitmqctl: невозможно подключиться к узлу rabbit@myserver nodedown

Я использую RabbitMQ v3.3.5 с Erlang OTP 17.1 в Windows 2008 R2. Мои среды Dev и QA автономны. Мои промежуточные и производственные среды кластеризованы.

Я обнаружил, что эта проблема часто возникает, когда служба RabbitMQ работает, консоль управления RabbitMQ видит все, но когда я пытаюсь запустить rabbitmqctl из командной строки, происходит сбой с сообщением об ошибке, сообщающей, что узел не работает (пробовал локально и на удаленный сервер).

Эта проблема решена, если я перезапущу службу Windows.

Я не вижу сообщения об ошибке в журнале ошибок RabbitMQ. Последнее сообщение указывало на то, что узел работает.

Ниже приведен пример вывода проблемы, с которой я недавно столкнулся на узле 2 нашего промежуточного кластера Windows:

PS C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin> .\rabbitmqctl.bat status
Status of node rabbit@MYSERVER2 ...
Error: unable to connect to node rabbit@MYSERVER2: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@MYSERVER2]

rabbit@MYSERVER2:
  * connected to epmd (port 4369) on MYSERVER2
  * epmd reports: node 'rabbit' not running at all
                  no other nodes on MYSERVER2
  * suggestion: start the node

current node details:
- node name: rabbitmqctl2199771@MYSERVER2
- home dir: C:\Users\RabbitMQ
- cookie hash: mn6OaTX9mS4DnZaiOzg8pA==

в этот момент я перезапускаю службу RabbitMQ, а затем повторяю попытку

PS C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin> .\rabbitmqctl.bat status
Status of node rabbit@MYSERVER2...
[{pid,3784},
 {running_applications,
     [{rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},
      {rabbit,"RabbitMQ","3.3.5"},
      {os_mon,"CPO  CXC 138 46","2.2.15"},
      {mnesia,"MNESIA  CXC 138 12","4.12.1"},
      {xmerl,"XML parser","1.3.7"},
      {sasl,"SASL  CXC 138 11","2.4"},
      {stdlib,"ERTS  CXC 138 10","2.1"},
      {kernel,"ERTS  CXC 138 10","3.0.1"}]},
 {os,{win32,nt}},
 {erlang_version,
     "Erlang/OTP 17 [erts-6.1] [64-bit] [smp:4:4] [async-threads:30]\n"},
 {memory,
     [{total,35960208},
      {connection_procs,2704},
      {queue_procs,5408},
      {plugins,111936},
      {other_proc,13695792},
      {mnesia,102296},
      {mgmt_db,0},
      {msg_index,21816},
      {other_ets,884704},
      {binary,25776},
      {code,16672826},
      {atom,602729},
      {other_system,3834221}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"},{amqp,5672,"0.0.0.0"}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,3435787059},
 {disk_free_limit,50000000},
 {disk_free,74911649792},
 {file_descriptors,
     [{total_limit,8092},
      {total_used,4},
      {sockets_limit,7280},
      {sockets_used,2}]},
 {processes,[{limit,1048576},{used,139}]},
 {run_queue,0},
 {uptime,5}]
...done.

Любая идея относительно того, что вызывает это и как автоматически определить ситуацию?

Это конкретно проблема с запуском RabbitMQ в Windows?


person Alf47    schedule 20.08.2014    source источник
comment
Я подтвердил, что хэш файла cookie в сообщении об ошибке соответствует хешу файла cookie последнего успешного перезапуска службы в файле журнала и что этот хэш также соответствует хэшу файла cookie последнего успешного перезапуска службы на другом узле.   -  person Alf47    schedule 21.08.2014
comment
Имея точно такую ​​же проблему. Похоже, обсуждение продолжается в списке рассылки groups.google.com/ форум/#!topic/rabbitmq-users/Zn8unuF4bTM   -  person skMed    schedule 22.08.2014
comment
Да, я буду продолжать обновлять эту информацию и обновлять ее. На данный момент единственная достоверная информация, которой я располагаю, заключается в том, что я смог подтвердить, что при возникновении проблемы процесс epmd.exe не запущен на сервере. Я вижу это в диспетчере задач Windows. Как только я перезапускаю службу RabbitMQ, запускается процесс epmd.exe, и все работает правильно.   -  person Alf47    schedule 22.08.2014
comment
Я получаю эту проблему и решил ее с помощью этого метода: stackoverflow.com/questions/38523236/   -  person aircraft    schedule 30.08.2017


Ответы (4)


Имена хостов нечувствительны к регистру, когда вы пытаетесь их разрешить. Например, LOCALHOST и localhost — это один и тот же хост.

Однако, когда Erlang создает имя узла (например, rabbit@<hostname> в случае RabbitMQ), это имя чувствительно к регистру. Таким образом, rabbit@LOCALHOST и rabbit@localhost — это два разных имени узла, даже если они работают на одном хосте.

Недавно мы (команда RabbitMQ) обнаружили, что в Windows имя узла, созданное для RabbitMQ был непоследовательным. Поэтому иногда RabbitMQ, запускаемый как служба Windows, мог называться rabbit@MYHOST, но rabbitmqctl пытался достичь rabbit@myhost и терпел неудачу.

Начиная с RabbitMQ 3.6.0, имя узла должно быть согласованным.

person Jean-Sébastien Pédron    schedule 22.03.2016
comment
В WIndows 10 Pro установщик rabbitmq не может правильно настроить RabbitMQ как службу. Мне пришлось запустить rabbitmq-service remove, а затем rabbitmq-service install, чтобы он работал правильно. - person Rosdi Kasim; 29.06.2016
comment
Привет! Не могли бы вы сообщить об этой проблеме в список рассылки rabbitmq-users? groups.google.com/forum/#!forum/rabbitmq-users - person Jean-Sébastien Pédron; 01.07.2016
comment
похоже проблема осталась. Он пытается связаться с узлом rabbit@<hostname>, а имя хоста моей системы написано маленькими буквами. Есть ли решение этой проблемы? Или есть ли способ установить имя хоста заглавными буквами, это решит мою проблему? - person phougatv; 17.08.2018

Для всех, кто получил эту ошибку, это было мое исправление. Я установил Erlang, но пропустил инструкции по настройке переменной среды.

Я читал страницу ручной установки: https://www.rabbitmq.com/install-windows-manual.html и обнаружил следующее:

Установите ERLANG_HOME туда, где вы фактически разместили свою установку Erlang, например. C:\Program Files\erlx.x.x (полный путь). Пакетные файлы RabbitMQ ожидают выполнения %ERLANG_HOME%\bin\erl.exe.

Выберите «Пуск» > «Настройки» > «Панель управления» > «Система» > «Дополнительно» > «Переменные среды». Создайте системную переменную среды ERLANG_HOME и задайте для нее полный путь к каталогу, содержащему bin\erl.exe.

По какой-то причине автоматическая установка присвоила переменной ERLANG_HOME неверный путь — см. изображение ниже. Я просто добавил \bin в конце. введите здесь описание изображения

person NealWalters    schedule 11.05.2016
comment
В вашей цитате указано, что пакетные файлы RabbitMQ ожидают выполнения %ERLANG_HOME%\bin\erl.exe, и поэтому ERLANG_HOME следует установить в каталог, содержащий bin\erl.exe. Вы пришли к выводу, что ERLANG_HOME должно быть установлено на C:\Program Files (x86)\erl7.3\bin, но после расширения останется [...]\bin\bin\erl.exe. Это правильно? - person Samuel Harmer; 10.07.2018
comment
Извините, не помню всех вопросов. - person NealWalters; 10.07.2018
comment
Я пробовал как \bin\erl.exe, так и \bin, и оба пути возврата не могут быть найдены или что-то в этом роде, поэтому я думаю, что это больше не решение или, по крайней мере, не для RabbitMQ 3.6 и erl 8.1 - person et3rnal; 14.07.2020

У меня была аналогичная проблема в моем Linux-боксе, и я публикую ответ здесь, потому что rabbitmq в Windows может обрабатывать вещи аналогичным образом.

Мой пост и решение: rabbtimqadmin - Не удалось подключиться: [Errno -2] Имя или служба неизвестна

Основная проблема заключалась в изменении имени сервера после настройки rabbitmq. При установке rabbitmq ссылается на имя сервера, что делает его частью его конфигурации. Я вижу, что это аналогичная проблема в Windows.

Короче говоря, вы можете изменить имя сервера обратно на имя, которое было при первой установке rabbitmq, или вы можете добавить файл rabbitmq-env.conf, я не уверен, куда он пойдет в Windows, но следующее дает подробности для linux: https://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html

Обратите внимание, что в Linux имя сервера было CaSe SENiTivE! Таким образом, у вас может быть или не быть аналогичная проблема с окнами.

Надеюсь, что это помогает и удачи!

person James Oravec    schedule 07.04.2015
comment
Я обнаружил, что процесс epmd останавливается, и это, в конечном счете, приводит к поломке. Когда я перезапустил службу, этот процесс снова включился, и все заработало. В итоге я создал монитор службы, который не только проверяет, работает ли служба RabbitMQ, но также и процесс epmd. Если какой-либо из них терпит неудачу, он предупреждает меня и перезапускает службу RabbitMQ. - person Alf47; 10.04.2015

Если вы используете Linux, попробуйте изменить права доступа к папке /var/lib/rabbitmq/mnesia.

person Tushar Saxena    schedule 03.04.2017
comment
Это 755, так что с ним делать? - person aircraft; 04.07.2017