ошибка 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 Serverrabbitmq_server-3.3.5sbin> .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:UsersRabbitMQ
- cookie hash: mn6OaTX9mS4DnZaiOzg8pA==
на этом этапе я перезапускаю службу RabbitMQ, а затем повторяю попытку
PS C:Program Files (x86)RabbitMQ Serverrabbitmq_server-3.3.5sbin> .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?
4 ответов
Хоста случа-insensitives, когда вы пытаетесь решить их. Например, LOCALHOST
и localhost
являются одним и тем же хостом.
однако, когда Erlang создает имя узла (например. rabbit@<hostname>
в случае RabbitMQ) это имя чувствительно к регистру. Так что rabbit@LOCALHOST
и rabbit@localhost
- это два разных имени узлов, даже если они работают на одном хосте.
недавно мы (команда RabbitMQ) узнали, что,в Windows имя узла, построенное для RabbitMQ, было непоследовательно!--14-->. Поэтому иногда RabbitMQ запускается как служба Windows с именем rabbit@MYHOST
но rabbitmqctl
попытался бы достичь rabbit@myhost
и не получится.
начиная с RabbitMQ 3.6.0, имя узла должно быть согласованным.
для всех, кто получает эту ошибку, это было мое исправление. Я установил Erlang, но пропустил инструкции по настройке переменной окружения.
Я читал руководство по установке: https://www.rabbitmq.com/install-windows-manual.html и нашел следующее:--1-->
установите ERLANG_HOME туда, где вы фактически разместили свою установку Erlang, например C:\Program файлы\erlx.X. x (полный путь). Пакетные файлы RabbitMQ ожидать выполнения %ERLANG_HOME%\bin\erl.исполняемый.
перейти в меню Пуск > Настройки > Панель управления > Система > Дополнительно > переменная окружения. Создание переменной среды system ERLANG_HOME и установите для него полный путь к каталогу, который содержит bin\erl.исполняемый.
по какой - то причине автоматическая установка назначила неправильное имя пути переменной ERLANG_HOME-см. изображение ниже. Я просто добавил \bin в конце.
У меня была аналогичная проблема на моем Linux box и я публикую ответ здесь, потому что rabbitmq в windows может обрабатывать вещи аналогичным образом.
мой пост и решение: rabbtimqadmin-не удалось подключиться: [Errno -2] имя или служба не известны
основная проблема заключалась в изменении имени сервера после настройки rabbitmq. При установке rabbitmq ссылается на имя сервера, делая его частью своей конфигурации. Я вижу, что подобный вопрос окна.
короче говоря, вы можете изменить имя сервера обратно на имя, которое было, когда вы впервые установили rabbitmq или вы можете добавить rabbitmq-env.conf
файл, я не уверен, куда он пойдет в windows, но следующее дает подробную информацию для linux:https://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html
обратите внимание,что в linux имя сервера было Падежным! Таким образом, у вас может быть или не быть аналогичной проблемы с windows.
надеюсь, это поможет и хорошо удачи!