rabbtimqadmin-无法连接:[Erno-2]名称或服务未知



我在CentOS 5.x服务器上安装了RabbitMQ,用于在程序之间传递消息。我已按照上的说明安装了rabbitmqadminhttps://www.rabbitmq.com/management-cli.html并且过去曾在我的服务器上使用过它。

据我所知,这个特定的服务器似乎配置错误。我的网络搜索使我无法获得有关如何解决此问题的更多信息。

错误:

[root@server ~]# python26 /usr/local/bin/rabbitmqadmin list nodes
*** Could not connect: [Errno -2] Name or service not known
[root@server ~]# 

我已经尝试了几个不同的rabbitmqadmin命令,它们给出了相同的结果。如果我在没有额外参数的情况下运行命令,它会显示正常的帮助对话框。我有这个设置,并在其他几个服务器上工作。

你知道根本问题是什么吗?如果没有,无论如何都要获得更多的细节,比如verbose?

更新:

我只是试着检查rabbitmq的版本,它也产生了一个错误:

[root@server ~]# rabbitmqctl status
Status of node rabbit@server ...
Error: unable to connect to node rabbit@server: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@server]
rabbit@server:
  * connected to epmd (port 4369) on server
  * epmd reports node 'rabbit' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
current node details:
- node name: rabbitmqctl25451@server
- home dir: /var/lib/rabbitmq
- cookie hash: WXaeZT7XXm13naagfRX5cg==
[root@server ~]# 

我想看看能不能从中找到什么。。。我觉得这很奇怪,因为服务器传递消息很好,可以通过网络控制台进行监控。

Erlang版本:

[root@server rabbitmq]#  erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().'  -noshell
"R14B04"
[root@server rabbitmq]# 

Rabbitmq版本:

[root@server rabbitmq]# python26 /usr/local/bin/rabbitmqadmin --version
rabbitmqadmin 3.3.5
[root@server rabbitmq]# 

经过多次挖掘和挫折,我发现了我的问题。。。我发布了解决方案,以防其他人有类似的经历

以前,我发现如果在linux服务器上设置RabbitMQ,然后更改主机名,它可能会破坏一些rabbit配置。

这个问题最可怕的地方是,有人把服务器的名称从大写字母改成了小写字母。。。

我已经用两种方法之一解决了这个问题:

解决方案1:

将主机名恢复为以前的名称。这样,带有附加服务器名称的rabbitmqreferences就可以再次工作了。

解决方案2:

如果你想更改服务器名称,那么你可以在/etc/rabbitmq中创建一个rabbitmq-env.conf文件,比如:

NODENAME=rabbit@OLDHOSTNAME

如果你不确定你以前的名字是什么,你可以在/var/lib/rabbitmq/mnesia/文件夹中做一个ls来引用它。然后,您将看到一个与需要指定的节点名匹配的文件夹。

参考:https://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html

更新:

主机名是CaSE SeNSiTIve。。。有人更改了我的主机名,唯一的区别是。。。所以花了一段时间才注意到。。。

昨天我因为同样的问题损失了几个小时,而且是在新安装的时候,所以问题是我的用户和root用户的erlang cookie与rabbitmq用户的不同。

  • 查找用户的主页rabbitmq:

    # cat /etc/passwd | grep rabbitmq
    
  • 检查cookie是否彼此不同:

    # vimdiff /var/lib/rabbitmq/.erlang.cookie ~/.erlang.cookie
    
  • 如果它们不同,请为您想要访问服务器的用户从rabbitmq:复制cookie

    # cp /var/lib/rabbitmq/.erlang.cookie ~/.erlang.cookie
    

参考文献:

  • rabbitmqctl状态显示"TCP连接成功,但Erlang分发失败"

  • 节点(和CLI工具)如何相互身份验证:Erlang Cookie

最新更新