1. 概述

老話說的好:做人腳踏實地,一步一個腳印,便定能戰勝一切困難,最終取得成功!!!

言歸正傳,之前我們聊了 RabbitMQ 單點服務的安裝,今天我們來聊聊 RabbitMQ 3.9.7 映象模式叢集的搭建。

RabbitMQ 的映象模式叢集能夠保證資料100%不丟失,實際工作中用的最多,實現也很簡單,通常由3個節點組成。

2. 場景說明

伺服器A IP:192.168.1.22

伺服器B IP:192.168.1.8

伺服器C IP:192.168.1.144

伺服器A hostname:zhuifengren1

伺服器B hostname:zhuifengren2

伺服器C hostname:zhuifengren3

這三臺伺服器都已經安裝了 RabbitMQ 3.9.7,並啟動正常。

單點 RabbitMQ 的安裝,可參見我的另一篇文章《RabbitMQ3.9.7在CentOS7中的安裝搭建》。

3. 映象模式叢集的搭建

3.1 修改三臺機器的名稱,並在hosts中進行設定(機器名稱隨意)

# vi /etc/hostname

# vi /etc/hosts

3.2 啟動3臺伺服器上的 RabbitMQ 服務

# /sbin/service rabbitmq-server start

3.3 在啟動狀態下,將伺服器A上的 .erlang.cookie檔案 拷貝到 伺服器B 和 伺服器C 上

# scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.8:/var/lib/rabbitmq/

# scp /var/lib/rabbitmq/.erlang.cookie 192.168.1.144:/var/lib/rabbitmq/

3.4 使用 rabbitmqctl stop 命令停止3臺伺服器的RabbitMQ服務

# rabbitmqctl stop

注意:這裡不能使用之前的 /sbin/service rabbitmq-server stop 命令,停止服務

如果出現無法停止的情況,可嘗試使用 /sbin/service rabbitmq-server stop 命令停止後,再使用 /sbin/service rabbitmq-server start 命令啟動,

然後再使用 rabbitmqctl stop 命令停止。

3.5 使用 rabbitmq-server -detached 命令啟動3臺伺服器

(有些慢,耐心等待,可以使用 lsof -i:5672 命令檢視是否啟動)

# rabbitmq-server -detached

3.6 將從節點加入叢集

我們這裡將 伺服器A 作為主節點,將 伺服器B、伺服器C 作為從節點

在 伺服器B 和 伺服器C 執行以下操作:

# rabbitmqctl stop_app

# rabbitmqctl reset

# rabbitmqctl join_cluster rabbit@zhuifengren1

# rabbitmqctl start_app

3.7 配置映象模式 

在任意節點執行即可。

# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

3.8 檢視叢集狀態

# rabbitmqctl cluster_status

3.9 控制檯效果

3.10 從叢集中移除節點

1)在需要移除的節點上執行停止命令

# rabbitmqctl stop_app

2)在其他節點上執行移除節點命令

# rabbitmqctl forget_cluster_node rabbit@zhuifengren2

4. 綜述

今天聊了一下 RabbitMQ 3.9.7 映象模式叢集的搭建,希望可以對大家的工作有所幫助。

歡迎幫忙點贊、評論、轉發、加關注 :)

關注追風人聊Java,每天更新Java乾貨。

rabbitmqctl
stop