RabbitMQ入門(二)

單機搭建集群

自己學習測試,受限于機器原因,有時只能自己單機嘗試下集群操作,接下來帶你學會單機部署集群操作。

插件管理

為什么要先學會插件管理,因為不了解這個,搭建集群會有很多坑等著你踩。

rabbitmq-plugins enable rabbitmq_management
#啟用rabbitmq_management插件

rabbitmq-plugins list
# 顯示所有的插件,每一行一個

rabbitmq-plugins list -v
# 顯示所有的插件,并且顯示插件的版本號和描述信息

rabbitmq-plugins list -v management
# 顯示所有名稱含有 "management" 的插件

rabbitmq-plugins list -e rabbit
# 顯示所有顯示或者隱式啟動的插件

rabbitmq-plugins disable --all
#禁用所有插件

以上便是常用的一些插件管理命令。

單機集群搭建,網(wǎng)上一些資料都是寫明使用RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached 這個命令,修改portnodename便可以。但是這個是有前提的,就是你必須先禁用所有的插件,不然的話,你是無法成功搭建集群,因為有些插件會監(jiān)聽專門的接口來提供服務,這個時候你就還得去區(qū)分開這些插件使用的端口號。

教科書般集群操作

  1. rabbitmq-plugins list -e rabbit 查看當前是否有開啟的插件

  2. rabbitmq-plugins disable --all如果有啟動的插件,禁用所有插件

  3. RABBITMQ_NODE_PORT=5672 RABBITMQ_NODENAME=rabbit1 rabbitmq-server -detached
    RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
    RABBITMQ_NODE_PORT=5674 RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached
    
    #通過這三個命令可以開啟三個節(jié)點
    
    rabbitmqctl status -n rabbit1@xuxiangdeMacBook-Pro
    #查看一個節(jié)點的狀態(tài)
    
  4. 將rabbit2節(jié)點加入集群

    rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro stop_app
    #先停止rabbit2
    rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro reset
    #清空元數(shù)據(jù)和狀態(tài)
    rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro join_cluster rabbit1@xuxiangdeMacBook-Pro
    #加入第一個節(jié)點
    rabbitmqctl -n rabbit2@xuxiangdeMacBook-Pro start_app
    #啟動第二個節(jié)點
    
  5. 如上重復對rabbit3使用,便可以得到rabbit1,rabbit2,rabbit3組成的集群

插件開啟的情況

很多時候,你可能需要開啟某些插件,例如rabbitmq_management插件,開啟后便可以在web界面查看相關情況,很是舒服。這種情況下,按照上面的集群操作,必然會出現(xiàn)問題。

例如在開啟了rabbitmq_management插件時,用上面那種方法啟動多個節(jié)點時,便會出現(xiàn)如下錯誤(截取錯誤部分)。

Error description:
   ......
throw:{could_not_start,rabbitmq_management,
       {rabbitmq_management,
        {bad_return,
         {{rabbit_mgmt_app,start,[normal,[]]},
          {'EXIT',
           {{could_not_start_listener,
             [{port,15672}],
             {shutdown,
              {failed_to_start_child,ranch_acceptors_sup,
               {listen_error,rabbit_web_dispatch_sup_15672,eaddrinuse}}}},

使用RABBITMQ_NODE_PORT=5673 RABBITMQ_NODENAME=rabbit2 rabbitmq-server啟動rabbit2時,便可以看到上述錯誤。(如果加上-detached,便在后臺啟動,看不到這些,只能去日志查看)。

可以看到上面錯誤中說明could_not_start,rabbitmq_management同時{could_not_start_listener,[{port,15672}],web界面操作默認的端口是15672,但是我們的rabbit1已經(jīng)占用了這個端口,此時咱們啟動rabbit2時,便會出現(xiàn)錯誤,這時候你就得在啟動時指定相應參數(shù)避免這個問題。

RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached
#指定端口,改為15673,這樣便可以避免上述問題

同樣可以利用上述方法啟動rabbit3,然后再使用之前同樣的操作將這兩個節(jié)點加入集群便可在web界面看到下圖


集群搭建成功

這樣便是成功的搭建好了一個單機上的集群。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • rabbitmq有3種模式,集群模式2種? 單機模式:即單機情況不做集群,就單獨運行一個rabbitmq而已。...
    嗷大彬彬閱讀 4,216評論 1 9
  • 整體架構(gòu) 部署步驟 基于 Docker 基本概念內(nèi)存節(jié)點只保存狀態(tài)到內(nèi)存,例外情況是:持久的 queue 的內(nèi)容將...
    mvictor閱讀 12,902評論 5 30
  • 關于消息隊列,從前年開始斷斷續(xù)續(xù)看了些資料,想寫很久了,但一直沒騰出空,近來分別碰到幾個朋友聊這塊的技術(shù)選型,是時...
    預流閱讀 586,573評論 51 787
  • 第二章 誤入小人國 凡卡隨手拿了一把掃帚,作為防身武器。黑洞里有一架軟梯,凡卡不安地往下...
    紀宇菲閱讀 554評論 0 1
  • 今天一天就是拜年走親戚,7點多就起床了,到下午5點多才回家,還有幾家親戚家沒有去,明天去。也只有晚飯在家里吃...
    天空藍上閱讀 127評論 0 0

友情鏈接更多精彩內(nèi)容