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

OpenStack错误:Error: unable to connect to node rabbit@localhost: nodedown
问题来源:rabbitmq添加用户失败
思考原因
1、翻译一下
2、解释
3、su 和 su - 的区别
4、简单解释问题
总结
问题来源: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==

解决方法:
方法一
无其他问题,原来是由于# bash 环境的问题又开了一个shell,# exit 退出到原来的shell执行就行,

[root@ct ~]# exit
exit
[root@localhost yum.repos.d]# exit
登出

Connection closed by foreign host.

Disconnected from remote host(最小化1) at 13:46:32.

Type `help' to learn how to use Xshell prompt.
[c:\~]$

Connecting to 192.168.247.11:22... #重新连接
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Fri Dec 11 19:42:30 2020
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" #创建成功

方法二
查询mq的进程

ps -ef | grep rabbitmq
将mq的进程杀掉

ps -ef | grep rabbitmq | grep -v grep | awk '{print $2}' | xargs kill -9
启动mq

rabbitmq-server -detached
查询mq的状态

rabbitmqctl status


思考原因
作为一个专业技术人员,难免也会出现小错误,为了避免学弟学妹出现同样的问题,在解决问题之前,我来给各位先分析一下原因

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 - 是看起来很像,而且使用之后貌似效果也一样,但是还是有不小的差别的,这就需要我们去进行一些自我的总结和了解
————————————————
版权声明:本文为CSDN博主「小白的成功进阶之路」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Lucien010230/article/details/117034898

posted @ 2022-07-12 14:16  leiuk  阅读(434)  评论(0编辑  收藏  举报