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

rabbtimqadmin - Could not connect: [Errno -2] Name or service not known

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

据我所知,这台服务器似乎配置错​​误。我的网络搜索未能获得有关如何解决此问题的更多信息。

错误:

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

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

知道根本问题是什么吗?如果没有,无论如何要获得更多详细信息,比如详细信息?

更新:

我刚刚尝试检查 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 ~]# 

我要看看我是否能从中找到一些东西...我觉得这很奇怪,因为服务器可以正常传递消息并且可以通过 Web 控制台进行监控。

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 配置。

这个问题最棒的部分是有人将服务器的名称从所有大写字母更改为小写...

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

解决方案一:

将主机名还原为以前的名称。这样带有附加服务器名称的 rabbitmq 引用再次起作用。

方案二:

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

NODENAME=rabbit@OLDHOSTNAME

如果您不确定您以前的名字是什么,您可以通过在 /var/lib/rabbitmq/mnesia/ 文件夹中执行 ls 来参考它。然后您会看到一个与您需要指定的节点名称相匹配的文件夹。

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

更新:

主机名是区分大小写的...有人更改了我的主机名,唯一的区别是大小写...所以花了一段时间才注意到...

昨天我在同样的问题上浪费了几个小时,而且它是全新安装的,所以问题是来自我的用户和 root 用户的 erlang cookie 与来自 rabbitmq 用户的不同。

  • 找出用户rabbitmq的HOME:

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

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

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

参考文献: