Rabbitmqctl Ошибка: невозможно подключиться к node rabbit @myserver nodedown
Я запускаю RabbitMQ v3.3.5 с Erlang OTP 17.1 в Windows 2008 R2. Мои среды Dev и QA автономны. Моя промежуточная и производственная среда сгруппирована.
Я нахожу эту проблему часто, когда работает служба RabbitMQ, консоль управления RabbitMQ видит все, но когда я пытаюсь запустить rabbitmqctl из командной строки, она с ошибкой говорит о том, что node не работает ( как локально, так и на удаленном сервере).
Эта проблема разрешена, если я перезапущу службу Windows.
Я не вижу сообщения об ошибке в журнале ошибок RabbitMQ. В последнем сообщении указано, что node встал.
Ниже приведен пример вывода проблемы, с которой я недавно столкнулся в node 2 нашего кластера окон:
PS C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin> .\rabbitmqctl.bat status
Status of node [email protected] ...
Error: unable to connect to node [email protected]: nodedown
DIAGNOSTICS
===========
attempted to contact: [[email protected]]
[email protected]:
* 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: [email protected]
- 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 [email protected]
[{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?
Ответы
Ответ 1
Хост-имена не зависят от регистра, когда вы пытаетесь их разрешить. Например, LOCALHOST
и LOCALHOST
- это один и тот же хост.
Однако, когда Erlang создает имя node (например, [email protected]<hostname>
в случае RabbitMQ), это имя чувствительно к регистру. Таким образом, [email protected]
и [email protected]
- это два разных имени node, даже если они работают на одном и том же хосте.
Недавно мы (команда RabbitMQ) выяснили, что в Windows, имя node, построенное для RabbitMQ, было непоследовательным. Поэтому иногда RabbitMQ запускается, поскольку служба Windows может быть названа [email protected]
, но rabbitmqctl
будет пытаться достичь [email protected]
и сбой.
Так как RabbitMQ 3.6.0, имя node должно быть последовательным.
Ответ 2
Для кого-либо еще, получившего эту ошибку, это было мое исправление. Я установил Erlang, но не заметил инструкций по настройке Environmental Variable.
Я читал страницу установки вручную:
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 в конце.
![введите описание изображения здесь]()
Ответ 3
У меня была аналогичная проблема в моем linux box, и я размещаю здесь ответ, потому что rabbitmq на окнах может обрабатывать вещи одинаково.
Мой пост и решение: 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! Таким образом, вы можете иметь или не иметь аналогичную проблему с окнами.
Надеюсь, это поможет и удачи!
Ответ 4
Если вы используете linux, попробуйте изменить разрешение папки/var/lib/rabbitmq/mnesia.
Ответ 5
Точно сказать не могу...!
В моем случае такая же проблема произошла, потому что мой сервер не был добавлен в домен
Поверьте, добавление сервера в домен может исправить это