web-dev-qa-db-fra.com

erreur rabbitmqctl: impossible de se connecter au noeud rabbit @ myserver nodedown

J'utilise RabbitMQ v3.3.5 avec Erlang OTP 17.1 sur Windows 2008 R2. Les environnements de développement et d'assurance qualité sont autonomes. Mes environnements de transfert et de production sont mis en cluster.

Je trouve ce problème qui se produit souvent lorsque le service RabbitMQ est en cours d’exécution, la console de gestion RabbitMQ voit tout, mais lorsque j’essaie d’exécuter rabbitmqctl à partir de la ligne de commande, il échoue avec une erreur indiquant que le nœud est en panne serveur distant).

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 nœud était actif.

Vous trouverez ci-dessous un exemple de sortie du problème que j'ai rencontré récemment sur le noeud 2 de notre cluster de fenêtres de transfert:

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==

à ce stade, je redémarre le service RabbitMQ puis réessaie

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.

Avez-vous une idée de ce qui cause cela et comment détecter automatiquement la situation?

Est-ce spécifiquement un problème avec RabbitMQ sous Windows?

15
Alf47

Les noms d'hôte sont insensibles à la casse lorsque vous essayez de les résoudre. Par exemple, LOCALHOST et localhost sont le même hôte.

Cependant, lorsque Erlang construit 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 nœuds différents, même s’ils fonctionnent sur le même hôte.

Récemment, nous (l'équipe RabbitMQ) avons découvert que, sous Windows, le nom du nœud construit pour RabbitMQ était incohérent . Par conséquent, parfois, RabbitMQ démarré en tant que service Windows pourrait s'appeler rabbit@MYHOST mais rabbitmqctl tenterait d'atteindre rabbit@myhost et échouerait.

Depuis RabbitMQ 3.6.0, le nom du nœud devrait être cohérent.

Pour quiconque ayant cette erreur, c’était ma solution. J'ai installé Erlang, mais j'ai oublié les instructions relatives à la configuration de la variable d'environnement. 

Je lisais la page d'installation du manuel: https://www.rabbitmq.com/install-windows-manual.html

Définissez ERLANG_HOME sur l'emplacement actuel de votre installation Erlang, par exemple. C:\Program Files\erlx.x.x (chemin complet). Les fichiers de commandes RabbitMQ s'attendre à exécuter% ERLANG_HOME%\bin\erl.exe.

Sélectionnez Démarrer> Paramètres> Panneau de configuration> Système> Avancé> Variables d'environnement. Créez la variable d'environnement système ERLANG_HOME et définissez-le sur le chemin complet du répertoire dans lequel contient bin\erl.exe.

Pour une raison quelconque, l'installation automatique a attribué un nom de chemin incorrect à la variable ERLANG_HOME - voir l'image ci-dessous. J'ai simplement ajouté\bin à la fin.  enter image description here

2
NealWalters

J'ai eu un problème similaire sur ma machine Linux et je poste la réponse ici, car rabbitmq sous Windows peut gérer les choses de la même manière.

Mon message et ma solution: rabbtimqadmin - Impossible d'établir la connexion: [Errno -2] Nom ou service inconnu

Le problème principal était de changer le nom de serveur 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 que cela est un problème similaire sur Windows.

En bref, vous pouvez changer le nom du serveur pour qu'il redevienne celui que vous aviez lors de la première installation de rabbitmq ou vous pouvez ajouter un fichier rabbitmq-env.conf. Je ne sais pas trop où il ira dans Windows, mais voici ce que donne Linux: https : //www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html

Notez que sur Linux le nom du serveur était CaSe SeniTive! Ainsi, vous pouvez ou non avoir un problème similaire avec Windows.

J'espère que ça t'aide et bonne chance!

1
James Oravec

Si vous utilisez linux, essayez de modifier l’autorisation du dossier/var/lib/rabbitmq/mnesia.

0
Tushar Saxena