赞
踩
今天在调用rabbitmqctl list_users一直报错,当时很不理解,找遍了所有网上的方法,仔细精读每个单词,查找官网解决方法,都没有解决。最后花费了一下午排查问题,我的思路是从报错信息出发,根据列举的信息一一排查
1.以下是我的报错信息
对应的翻译信息如下
- 错误:无法在节点“rabbit@192”上执行操作。请参阅下面的诊断信息和建议。
-
- 最常见的原因是:
-
- * 目标节点无法访问(例如,由于主机名解析、TCP 连接或防火墙问题)
- * CLI 工具无法向服务器进行身份验证(例如,由于 CLI 工具的 Erlang cookie 与服务器的 cookie 不匹配)
- * 目标节点未运行
- 除了以下诊断信息外:
-
- * 有关详细信息,请参阅 https://rabbitmq.com/documentation.html 上的 CLI、集群和网络指南
- * 查阅节点上的服务器日志rabbit@192
- * 如果目标节点配置为使用长节点名称,请不要忘记在 CLI 工具中使用 --longnames
- 诊断
- ===========
-
- 尝试联系:[rabbit@192]
-
- rabbit@192:
- * 无法连接到 192 上的 epmd(端口 4369):badarg(未知的 POSIX 错误)
- 当前节点详细信息:
- * 节点名称:'rabbitmqcli-7053-rabbit@192'
- * 有效用户主目录:/var/lib/rabbitmq
- * Erlang cookie 哈希值:NM
以上给的三个原因我都在反复查看,但因为不够仔细,将排查时间延长了,本次遇到的问题原因:主机名解析
在linux和rbmq都默认安装,从上面报错信息看出的rabbitmq的node节点名是192,而rbmq的node名是根据主机的hostname来的,正是因为是hostname是纯数字所以才出现本次问题
开始我也有去修改 hosts文件:/etc/hosts 在文件末尾追加了 主机ip 192
此时少了一个步骤没有自己去ping自己的主机名是否调通
[root@localhost rabbitmq]# ping 192
connect: Invalid argument
后面去ping 192,发现是不通的,这时候我就怀疑是纯数字原因
我又去修改了一遍/etc/hosts文件 主机ip meng
- [root@localhost etc]# vi hosts
- [root@localhost etc]# ping 192
- connect: Invalid argument
- [root@localhost etc]# vi hosts
- [root@localhost etc]# ping meng
- PING meng (192.168.100.128) 56(84) bytes of data.
- 64 bytes from meng (192.168.100.128): icmp_seq=1 ttl=64 time=0.017 ms
- 64 bytes from meng (192.168.100.128): icmp_seq=2 ttl=64 time=0.032 ms
- 64 bytes from meng (192.168.100.128): icmp_seq=3 ttl=64 time=0.054 ms
- 64 bytes from meng (192.168.100.128): icmp_seq=4 ttl=64 time=0.034 ms
- ^C
- --- meng ping statistics ---
此时已经确信是我的主机名的问题,最终解决方法如下:
1.# 设置hostname
vi /etc/hosts
主机ip mq
2.vi /etc/hostname
末尾追加 rabbitmq
3.添加环境变量
export HOSTNAME=mq
4.刷新DNS缓存
/etc/init.d/network restart
5.重启mq服务器
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。