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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM