搭建rabbitmq集群参考教材 https://blog.csdn.net/u013256816/article/details/53524766
三台节点启动之后,想要使用s146作为集群主节点,在s151上将该节点加入s146集群时,报如下错误。
[root@s151 rabbitmq]# rabbitmqctl join_cluster rabbit@s146
Clustering node rabbit@s151 with rabbit@s146 ...
Error: unable to connect to nodes [rabbit@s146]: nodedown
DIAGNOSTICS
===========
attempted to contact: [rabbit@s146]
rabbit@s146:
* connected to epmd (port 4369) on s146
* epmd reports node 'rabbit' running on port 25672
* TCP connection succeeded but Erlang distribution failed
* suggestion: hostname mismatch?
* suggestion: is the cookie set correctly?
* suggestion: is the Erlang distribution using TLS?
current node details:
- node name: 'rabbitmq-cli-30368@s151'
- home dir: /root
- cookie hash: X8M4gNn7BBuuU5WV1cHdhw==
我在网上看到了很多人都碰到了这个错误,错误提示中也说了三种解决方案。
suggestion: hostname mismatch?
hostname配置是否正确,对于hostname的配置可以参考https://my.oschina.net/mingshashan/blog/741988
suggestion: is the cookie set correctly?
.erlang.cookie设置是否正确,.erlang.cookie文件里面的字符串相当于一个密钥一样,一个节点想要加入某个集群,必须要和这个机器中的所有节点的.erlang.cookie内容一样,所以通常将主节点的.erlang.cookie文件分发给其它节点即可,关键是这个节点可能出现在两个位置/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie。这样一来如何确定自己的.erlang.cookie文件在哪儿呢?这个要看rabbitmq的日志文件,如下所示:
=INFO REPORT==== 9-Apr-2018::14:57:21 ===
node : rabbit@s151
home dir : /root
config file(s) : /opt/rabbitmq/sbin/../etc/rabbitmq/rabbitmq.config (not found)
cookie hash : HfR3DHABJqfPDV+hBgdzXQ==
log : /opt/rabbitmq/sbin/../var/log/rabbitmq/rabbit@s151.log
sasl log : /opt/rabbitmq/sbin/../var/log/rabbitmq/rabbit@s151-sasl.log
database dir : /opt/rabbitmq/sbin/../var/lib/rabbitmq/mnesia/rabbit@s151
其中的home dir就是你的.erlang.cookie文件存放的目录,而这个cookie hash就是.erlang.cookie里面的值hash转换得到的,你可以比较cookie hash的值是不是一致来判断你的.erlang.cookie是否一致。我之前一直以为我的.erlang.cookie文件在/var/lib/rabbitmq/下,所以屡次操作都失败了,看了日志后发现节点的cookie hash不一致,才发现原来一直将.erlang.cookie这个文件的位置搞错了,所以看日志很重要。
suggestion: is the Erlang distribution using TLS?
这种情况目前好像还没碰到过。