OpenStack错误:Error: unable to connect to node rabbit@localhost: nodedown

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 - 是看起来很像,而且使用之后貌似效果也一样,但是还是有不小的差别的,这就需要我们去进行一些自我的总结和了解

上一篇:Unable to allocate memory on node -1


下一篇:org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ui was unable to load class org.ecli