erreur rabbitmqctl: impossible de se connecter à node rabbit@myserver nodedown
je lance RabbitMQ v3.3.5 avec Erlang OTP 17.1 sous Windows 2008 R2. Mes environnements Dev et QA sont autonomes. Mes environnements de mise en scène et de production sont regroupés.
je trouve que ce problème se produit souvent là où le service RabbitMQ est en cours d'exécution, la console de gestion RabbitMQ voit tout, mais quand j'essaie d'exécuter rabbitmqctl à partir de la ligne de commande il échoue avec une erreur disant que le noeud est en panne (essayé localement et à distance serveur.)
ce problème est résolu si je redémarre le service Windows.
Je ne vois aucun message d'erreur dans le journal des erreurs RabbitMQ. Le dernier message indiquait que le noeud était activé.
ci-dessous est un exemple de sortie de la question que j'ai récemment éprouvé sur le noeud 2 de notre mise en scène Windows cluster:
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==
à ce point je redémarre le service RabbitMQ et puis réessaie
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.
une idée de ce qui cause cela et comment détecter automatiquement la situation?
est-ce spécifiquement un problème avec le fonctionnement de RabbitMQ sur Windows?
4 réponses
ne tiennent pas compte de la casse lorsque vous tentez de les résoudre. Par exemple, LOCALHOST
et localhost
sont les mêmes hôtes.
Toutefois, lorsque Erlang constructions le nom d'un nœud (par exemple. rabbit@<hostname>
dans le cas de RabbitMQ), ce nom est sensible à la casse. Donc rabbit@LOCALHOST
et rabbit@localhost
sont deux noms de noeuds différents, même s'ils tournent sur le même hôte.
récemment, nous (l'équipe de RabbitMQ) avons découvert que, Windows, le nom de noeud construit pour RabbitMQ était incohérent . Par conséquent, parfois, RabbitMQ a commencé comme un service Windows pourrait être appelé rabbit@MYHOST
mais rabbitmqctl
essayer d'atteindre rabbit@myhost
et échouer.
depuis RabbitMQ 3.6.0, le nom du noeud doit être cohérent.
pour quiconque ayant cette erreur, c'était ma solution. J'ai installé Erlang, mais j'ai négligé les instructions sur la configuration de la Variable environnementale.
je lisais la page d'installation manuelle: https://www.rabbitmq.com/install-windows-manual.html et trouvé ce qui suit:
définissez ERLANG_HOME à L'endroit où vous avez réellement mis votre installation Erlang, par exemple: C:\Program Files \ erlx.x.x (chemin complet). Le Fichiers de lots RabbitMQ attendez-vous à exécuter %ERLANG_HOME%\bin\erl.EXE.
Allez à Démarrer > Paramètres > Panneau de configuration > Système > Avancé > Les Variables D'Environnement. Créer la variable d'environnement système ERLANG_HOME et le mettre sur le chemin complet du répertoire contient bin\erl.EXE.
pour une raison quelconque, l'installation automatique a attribué le mauvais nom de chemin à la variable ERLANG_HOME - voir l'image ci-dessous. J'ai simplement ajouté \bin à la fin.
j'ai eu un problème similaire sur ma machine linux et je poste la réponse ici, parce que rabbitmq sur windows peut gérer les choses de la même manière.
Mon post et la solution: rabbtimqadmin - impossible de se connecter: [Errno -2] Nom ou le service ne sait pas
le problème central était de changer le servername après la configuration de rabbitmq. Une fois installé, rabbitmq fait référence au nom du serveur, ce qui en fait une partie de sa configuration. Je peux voir ce étant un problème similaire sur windows.
en bref, vous pouvez changer le nom du serveur de nouveau au nom qu'il était lorsque vous avez installé rabbitmq ou vous pouvez ajouter un fichier rabbitmq-env.conf
, Je ne suis pas sûr où il irait dans windows, mais ce qui suit donne des détails pour linux: https://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html
notez que sur linux le nom du serveur était CaSe SENiTivE! De sorte que vous peut ou peut ne pas avoir un problème similaire avec windows.
Espérons que cela aide et bonne chance!
si vous utilisez linux, essayez de changer la permission du dossier /var/lib/rabbitmq/mnesia.