RabbitMQ集群搭建

說明

  • RabbitMQ集群搭建比較簡單,都是通過命令設置即可,無需配置文件。
  • 在配置中,有個別步驟存在先后順序,所以需要注意。后面會詳細說明。

準備

  • 系統(tǒng)Centos 7
  • Rabbit版本:3.10.0
  • Erlang版本:23.3.4.11
  • 3臺虛擬機,IP地址分別為:192.168.250.101、192.168.250.102 和 192.168.250.103
  • 3臺虛擬機上已正常安裝RabbitMQ
  • 安裝rabbitmq看:centos7下安裝rabbitmq

避坑點(寫前面)

  • 在設置加入的node節(jié)點時,此節(jié)點必須要開放4369 和 25672端口(為了方便,建議給每臺機器都開這2個端口)
    • Centos7使用firewall-cmd命令來開放端口。
    • 比如:rabbitmqctl join_cluster rabbit@rabbit-101,將當前rabbitmq添加到rabbit-101節(jié)點集群上,此時就必須要給rabbit-101開放4369和25672端口。
  • 每臺機器上,都需要設置其他node節(jié)點和本機器node節(jié)點的 host主機名稱。否則rabbitmq無法與其他node節(jié)點通信。
  • 每臺機器上的rabbitmq,在修改玩host主機名稱后,注意要重啟網(wǎng)卡,讓host主機名生效:service network restart
  • 在host主機名稱修改完成后,需要先重啟動一次rabbitmq,主要目的是在 /var/lib/rabbitmq/mnesia/ 目錄下生成已當前host主機名稱為名的rabbitmq服務 和 /var/lib/rabbitmq/.erlang.cookie文件。
  • 每個rabbitmq需要使用同一個.erlang.cookie文件(可以使用遠程scp命令,將一個node節(jié)點上/var/lib/rabbitmq/.erlang.cookie文件同步到其他機器上)

開始

添加host主機名

  • 在每天機器上添加 host主機名稱(rabbitmq的node節(jié)點名,就是host主機名,所以每個node節(jié)點,都需要添加,否則會出現(xiàn)當前node節(jié)點,無法與另一個節(jié)點同步)
[root@rabbit-101 ~]# vim /etc/hosts

// 我的配置是如下,根據(jù)自行的機器ip地址,自行取名即可 
192.168.250.101 rabbit-101
192.168.250.102 rabbit-102
192.168.250.103 rabbit-103
  • 注意:每臺機器都要配置。且都要配置其他node節(jié)點的host名稱
  • 重啟網(wǎng)卡,讓host生效:service network restart
  • 3臺機器,相互ping 一下hostname,確?;ネ?/li>
[root@rabbit-102 rabbitmq]# ping rabbit-101
[root@rabbit-102 rabbitmq]# ping rabbit-102
[root@rabbit-102 rabbitmq]# ping rabbit-103

先重啟一次rabbitmq

  • 使用:rabbitmq-server start & 命令啟動一下
  • 再使用:rabbitmqctl stop 命令停止。
  • 在停止時,會有提示當前rabbit的名稱是什么,如果是配置的指定host主機名,則表示配置正確。
// 比如:我在192.168.250.103機器下,重啟rabbitmq后,會有如下提示
[root@rabbit-103 ~]# rabbitmqctl stop

// 這里能夠看到,node名稱為 rabbit@rabbit-103
Stopping and halting node rabbit@rabbit-103 ...

Gracefully halting Erlang VM
[root@rabbit-103 mnesia]# 

// 停止后,我們到 /var/lib/rabbitmq/mnesia/目錄下看看是否生成對應的rabbit@rabbit-103類的文件和目錄
[root@rabbit-103 mnesia]# ll
總用量 8
drwxr-xr-x. 5 rabbitmq rabbitmq 4096 5月  23 16:40 rabbit@rabbit-103
-rw-r--r--. 1 rabbitmq rabbitmq  194 5月  23 15:48 rabbit@rabbit-103-feature_flags
drwxr-xr-x. 2 rabbitmq rabbitmq    6 5月  23 15:48 rabbit@rabbit-103-plugins-expand
[root@rabbit-103 mnesia]#  

同步.erlang.cookie文件

  • 選擇一臺主機,將 /var/lib/rabbitmq/.erlang.cookie文件同步到另外2臺機器上。(這里使用scp命令,來的方便)
  • scp命令使用方法
  • 從192.168.250.101中將/var/lib/rabbitmq/.erlang.cookie同步到 192.168.250.102 和 192.168.250.103 機器上。
// 使用scp命令,root@192.168.250.102,root是用戶名,表示遠程ssh登錄的用戶。
[root@rabbit-101 rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.250.102:/var/lib/rabbitmq/
[root@rabbit-101 rabbitmq]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.250.103:/var/lib/rabbitmq/

開放端口

[root@rabbit-101 rabbitmq]# firewall-cmd --zone=public --add-port=4369/tcp --permanent
success
[root@rabbit-101 rabbitmq]# firewall-cmd --zone=public --add-port=25672/tcp --permanent
success
[root@rabbit-101 rabbitmq]# firewall-cmd --reload  // 重啟防火墻
success
[root@rabbit-101 rabbitmq]# 

開始配置

  • 先啟動rabbitmq:rabbitmq-server start &
  • 停止應用程序(rabbitmq在啟動時,會啟動Erlang節(jié)點 和 rabbitmq應用程序2個進程):rabbitmqctl stop_app
  • 將rabbitmq加入集群:rabbitmqctl join_cluster rabbit@rabbit-101
  • 啟動應用程序:rabbitmqctl start_app

查看集群信息

  • 查看集群信息:rabbitmqctl cluster_status
    集群信息

常見問題

  • rabbitmqctl join_cluster 命令時的問題:
    • 如果 /etc/hosts 文件中沒有設置其他node節(jié)點ip時,那么指定node節(jié)點會出現(xiàn)下圖問題(on node xxx nodedown):

      image.png

    • 如果是master沒有開啟指定端口,那么就會出現(xiàn)下圖中,未連接的錯誤提示。

    • 如果當前rabbitmq沒有使用同一個erlang.cookie時,就會出現(xiàn)如下提示:


      image.png

節(jié)點操作

  • 節(jié)點刪除。比如:將rabbit-103節(jié)點,從集群中刪除(在需要刪除節(jié)點上操作)

    • rabbitmqctl stop_app(停止app)
    • rabbitmqctl reset (重置)
    • rabbitmqctl start_app(啟動app)
  • 硬刪除,直接刪掉集群中的某個節(jié)點(在master機器上操作)

    • rabbitmqctl forget_cluster_node rabbit@rabbit-103
    • 硬刪除后,會導致rabbit-103無法啟動,只需要將 /var/lib/rabbitmq/ 目錄下所有文件刪除(包括:.erlang.cookie文件)

RabbitMQ集群恢復與故障轉(zhuǎn)移的5種解決方案

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

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

  • RabbitMQ集群搭建方法這里展示的是多機集群的部署,如果機器受限,可以選擇單機集群部署,詳細可以參考《Rabb...
    SkTj閱讀 642評論 0 0
  • 1.三臺虛擬機 CentOS7 虛擬機 (已經(jīng)安裝rabbitmq環(huán)境的) systemctl stop fire...
    帥氣的名稱被占用閱讀 298評論 0 0
  • 本文記錄RabbitMQ集群搭建過程中遇到的問題 環(huán)境 vmware12 虛擬機,CentOS7本文以兩臺Cent...
    殷天文閱讀 950評論 0 3
  • rabbitMQ的兩種重要特性,異步化提高系統(tǒng)抗峰值能力和系統(tǒng)及功能解耦,這兩個特點決定了rabbitMQ在我們的...
    AmosZhu閱讀 555評論 0 5
  • 這幾天在研究集群,想著搭建個RabbitMQ玩玩,由于本人是MAC辦公 編碼。試著將os+win7搭建一個集群,后...
    姬拉閱讀 3,590評論 0 0

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