RabbitMQ has Nodedown Error

2019-01-10 13:42发布

问题:

On a Windows 7 Enterprise machine, I made a fresh install of Erlang 17.4 and RabbitMQ 3.4.3 x64. The installation was successful and uneventful.

I have not yet tried to create my first queue or exchange, but I already see trouble. This problem is similar to another SO post, but that other post appears to involve clustering, which I don't have. Furthermore, that other poster can circumvent his issue by restarting the RabbitMQ service; that approach does not work for me.

My "nodedown" problem is evident at the RabbitMQ command prompt:

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

DIAGNOSTICS

attempted to contact: [rabbit@TPAJ05421843]

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

current node details:
- node name: 'rabbitmqctl-19884@TPAJ05421843'
- home dir: H:\
- cookie hash: PD4QQCYrf0TME9vIko3Xuw==

Based on the above, I chose to check the status of the node explicitly named 'RabbitMQ'. I get this:

C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.4.3\sbin>rabbitmqctl -n RabbitMQ status
Status of node 'RabbitMQ@TPAJ05421843' ...
Error: unable to connect to node 'RabbitMQ@TPAJ05421843': nodedown

DIAGNOSTICS

attempted to contact: ['RabbitMQ@TPAJ05421843']

RabbitMQ@TPAJ05421843:
* connected to epmd (port 4369) on TPAJ05421843
* epmd reports node 'RabbitMQ' running on port 59301
* TCP connection succeeded but Erlang distribution failed
* suggestion: hostname mismatch?
* suggestion: is the cookie set correctly?

current node details:
- node name: 'rabbitmqctl-23076@TPAJ05421843'
- home dir: H:\
- cookie hash: PD4QQCYrf0TME9vIko3Xuw==

Ok, this is barely better since at least it acknowledges 'RabbitMQ' running on port 59301. But what the heck could it mean that "Erlang distribution failed"?

When I try to research this topic, I found articles saying "be sure you have matched cookies." Based on that I found this article, which claims the "cookie mismatch" does not pertain to me, because I have not created (nor intend to create) a RabbitMQ cluster.

What should I do?

回答1:

I had this same problem today. There were no cookie or firewall problems and windows reported that the service was running successfully. This is what finally fixed it:

  1. Run RabbitMQ sbin command prompt as administrator.
  2. Run "rabbitmq-service remove"
  3. Run "rabbitmq-service install"

For some reason the service set up by the installer did not configure several registry entries. Running this set them correctly and allowed the service to run.

One thing I noticed was that before I did this, there was no description of the service in the Windows Services view. After installing with the rabbitmq-service command, the description was visible. This might be a quick indicator if you are having the same problem.



回答2:

As @eddyP commented, I had two different Erlang cookie files:

  • A server cookie file, located at $env:WINDIR\system32\config\systemprofile\.erlang.cookie (prior to Erlang 20.2 it was located at $env:WINDIR\.erlang.cookie).
  • A client cookie file, located at $env:USERPROFILE\.erlang.cookie.

Copying the server cookie file over the client one, so that both files were the same, fixed the problem for me.

For further details, see "How Nodes (and CLI tools) Authenticate to Each Other: the Erlang Cookie".



回答3:

From RabbitMQ Command Prompt sbin (run as administrator) execute this command:

rabbitmq-server restart 


回答4:

In Windown, For some reason delete all folder in c:\Users\xxx\AppData\Roaming\RabbitMQ\db\ (xxx is your username) then flow @Jerdev answer and

  • start rabbitmq net start rabbitmq

  • check rabbitmq service rabbitmqctl status



回答5:

The same question on the RabbitMQ mailing list: https://groups.google.com/forum/#!topic/rabbitmq-users/0s1ExFhl4hM.

The Erlang cookie is used by rabbitmqctl as well as server nodes, so it may need being taken care of (placed in the correct location). See "Installing as a non-administrator user leaves .erlang.cookie in the wrong place" on Windows quirks.



回答6:

If you come here looking for a linux answer for the same error message, try

sudo service rabbitmq-server start

(which is not a blocking command)



回答7:

I resolve my problem doing this in Windows 10.

  1. Execute RabbitMQ Command Prompt (sbin dir) as administrator.
  2. Execute "rabbitmq-service remove" in (RabbitMQ Command Prompt).
  3. Execute %AppData% in Run Dialog Box of Windows.
  4. Delete all files in RabbitMQ folder.
  5. Execute "rabbitmq-service install" in (RabbitMQ Command Prompt).
  6. Execute "rabbitmqctl start_app" in (RabbitMQ Command Prompt).


回答8:

Just do the following:

  1. Uninstall rabbitmq and erlang.
  2. delete the rabbitmq folder existing in your appdata (if you dont know the appdata location, just type echo %AppData% in the command prompt)
  3. Then install erlang first and then rabbitmq.
  4. After installing, enable the management plugin using below command:

    rabbitmq-plugins enable rabbitmq_management



回答9:

For me the cookies didnt match, like the other comments but the locations was in a different path for those having the same issue as me C:\Windows\System32\config\systemprofile



回答10:

This is how I resolved the error in my Windows 8 system:

Check for a syntax error in the rabbitmq.config file placed in the AppData folder for Windows.

How to check if there is any syntax error?

You can run rabbitmq-server restart from sbin folder in:
Program Files/RabbitMQ/rabbitmq_server_x.x/sbin/.

Replace the content of the rabbitmq.config with rabbitmq.config.example.

You may find the rabbitmq.config.example in:

Program Files/RabbitMQ/rabbitmq_server_x.x/etc/

Warning, you will lose the configuration you have saved previously with rabbitmq.

After changing the files, just hit

rabbitmq-server restart

in the sbin folder mentioned above.



回答11:

That is happening because rabbit MQ is not being installed correctly on Windows (and this error is misleading!). So to solve it do the following:

  1. type "cmd" in Cortana search or in "Run" for older version of Windows
  2. right click on in and choose "Run as Administrator"
  3. go to rabbit's sbin folder (cd "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.4\sbin")
  4. run: rabbitmq-service remove
  5. run: rabbitmq-service install

now you can run 6. rabbitmq-plugins enable rabbitmq_management 7. rabbitmq-service start 8. and, finally, run: start http://localhost:15672 9. log on as user "guest" with password: "guest" and that's it. Happy Rabbiting!



回答12:

I missed restarting my WINDOWS OS and then deleting the old version of ERLANG (which I uninstalled before restarting).

Somehow the fresh installation of Rabbit was referring to the old (un-installed version) and all the mismatch was happening. Clue was the 'services' referred Rabbit from the old ERLANG version.