rabbitmq搭建集群踩坑记

搭建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?
这种情况目前好像还没碰到过。

你可能感兴趣的:(消息中间件)