zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    data guard switchover切换异常
    oracle dataguard
    建立信任关系
    sqlplus 打印很乱,而且很短就换行
    老友记英语
    每天读一遍
    extern的用法
    linux信号处理
    http server v0.1_http_parse.c
    http server v0.1_http_webapp.c
  • 原文地址:https://www.cnblogs.com/shanfeng1000/p/12108627.html
Copyright © 2011-2022 走看看