rabbimq集群搭建报错:Error: unable TO perform an operation ON node 'rabbit@test3'. Please see diagnostics information AND suggestions below.

  在搭建rabbitmq集群的时候,添加内存节点时,抛出异常:Error: unable TO perform an operation ON node 'rabbit@test3'. Please see diagnostics information AND suggestions below.

  

  首先,假设当前服务器为A,我们在A服务器执行rabbitmqctl join_cluster rabbit@B --ram,就是说我们要将A服务器作为内存节点加入到B中,然后执行这个命令报了上述的错误

  总结了一下,这个问题可按以下思路解决:

  1、查看A,B两台服务器中rabbitmq根目录(rabbitmq安装目录)下的.erlang.cookie文件是否存在,且内容是否一样(使用cat命令输出),另外,可以的话,将用户主目录下的.erlang.cookie文件设置成和rabbitmq目录下的.erlang.cookie文件一致

  注:这里说的是rabbitmq根目录,准确说不是的,因为rabbitmq启动需要设置HOME环境变量,一般在rabbitmq-env文件(在rabbitmq根目录的bin目录下)中添加HOME环境变量,如果不设置HOME变量,可能会抛出异常erlexec: HOME must be set

  这里应该是查看A,B两台服务器上rabbitmq-env中配置的HOME变量指定的目录下.erlang.cookie是否存在且内容一致,而我们一般将这个HOME变量指向rabbitmq的根目录

  2、rabbitmqctl join_cluster rabbit@B --ram命令中的B貌似只能是host,不能是IP,因此需要在/etc/hosts中添加相应的IP--host映射,添加后,看能否ping通

  3、重启A,B服务器中的rabbitmq相关进程:  

  #查找rabbitmq相关进程
  ps -ef | grep rabbitmq
  #杀掉,可以使用-9强制杀掉
  sudo kill 5760 5761 5917
  #启动rabbitmq,命令后加个&表示在后台启动
  sudo rabbitmq-server &

   4、先暂停A中的应用,再指定join_cluster,若执行成功,再启动应用,在A中执行以下命令

    # 停止应用
  sudo rabbitmqctl stop_app
  #将A作为内存节点添加到B中去,--ram参数就是表示是内存节点,如果不带这个参数,就是磁盘节点
  sudo rabbitmqctl join_cluster rabbit@B --ram
  # 若上面命令执行成功,则启动应用 
  sudo rabbitmqctl start_app

 

posted @ 2019-12-27 17:37  没有星星的夏季  阅读(12165)  评论(0编辑  收藏  举报