OpenStack错误:Error: unable to connect to node rabbit@localhost: nodedown
问题来源:rabbitmq添加用户失败
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Error: unable to connect to node rabbit@localhost: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@localhost]
rabbit@localhost:
* connected to epmd (port 4369) on localhost
* epmd reports node 'rabbit' running on port 25672
* TCP connection succeeded but Erlang distribution failed
* Hostname mismatch: node "rabbit@ct" believes its host is different. Please ensure that hostnames resolve the same way locally and on "rabbit@ct"
current node details:
- node name: 'rabbitmq-cli-12@ct'
- home dir: /var/lib/rabbitmq
- cookie hash: oV+N20QLBoBQrAgHFUTACg==
思考原因
作为一个专业技术人员,难免也会出现小错误,为了避免学弟学妹出现同样的问题,在解决问题之前,我来给各位先分析一下原因
1、翻译一下
试图联系:[rabbit@localhost]
rabbit@localhost:
*连接到本地主机上的epmd(端口4369)
epmd报告节点'rabbit'在端口25672上运行
TCP连接成功,但Erlang分发失败
*主机名不匹配:节点“rabbit@ct”认为其主机不同。请确保主机名在本地和“rabbit@ct”上以相同的方式解析。
当前节点的详细信息:
-节点名称:'rabbitmq-cli-12@ct'
—home dir:“/var/lib/rabbitmq”
- cookie hash: oV+N20QLBoBQrAgHFUTACg==
2、解释
- 也就是说,问题的原因在于主机名不匹配导致的。
- OpenStack在刚开始进行环境配置的时候,必须要保证主机名的设置和文件里的配置设置一样,因此肯定会遇到一个问题就是更改主机名
- 在修改主机名的时候,必定会用到命令:hostnamectl set-hostname
- 在修改后,想要生效,会用到另一条命令进行切换,就是:su -
- 但是有时候,可能因为打字速度太快,导致只打了su,虽然看似切换了,但是就会遇到上面的问题,即主机名不匹配
3、su 和 su - 的区别
-
su -
- 当执行这个命令的时候表示切换到新用户,并且重新读取用户环境相关配置文件,具体的来说就是执行下用户家目录下.bash_profile和.bashrc文件,这个我们成为全切换
-
su
- 执行这个命令的时候系统不读取以上两个文件,所以我们一般称它为半切换,这样切换过去之后,新用户使用的依旧是此前用户的环境配置信息
4、简单解释问题
也就是说,我们使用了su,虽然能看到我们用户名改成了ct,但是实际环境还是使用的localhost,所以会导致问题的出现。
当我们使用了su - ,我们就换了一个新的bash环境,这样就能保证主机名就是新的ct,所以不会出现错误。
总结
所以,这样问题还是很好解决的,但是也是比较容易忽视的问题,所以我们有时候需要经常去注意一些小的细节,毕竟经常出现的问题大多数是我们容易忽视的问题。
su 和 su - 是看起来很像,而且使用之后貌似效果也一样,但是还是有不小的差别的,这就需要我们去进行一些自我的总结和了解