RabbitMQ集羣

RabbitMQ是什麼?

MQ(Mesee Qucue消息隊列)是種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,
而無需專用鏈接來連接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用
通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。

RabbitMQ是目前流行的開源消息隊列系統,用Erlang語言開發。RabbitMQ是AMQP(高級消息隊列協議)的標準實現。

實驗環境

IP地址 主機名 用途
192.168.10.157 mq1 磁盤節點
192.168.10.178 mq2 內存節點
192.168.10.163 mq3 內存節點

RabbitMQ集羣配置

實現步驟

1、配置三個節點的hosts文件,將如下內容分別加入到三臺服務器上
vim /etc/hosts

192.168.10.157 mq1
192.168.10.178 mq2
192.168.10.163 mq3        
#修改完需重啓:init 6

RabbitMQ集羣

2、三個節點配置yum軟件源,安裝rabbitmq軟件
yum install epel-release -y      //安裝源
yum install -y rabbitmq-server     //安裝服務
3、分別查看三個節點並添加管理任務,最後啓動rabbitmq服務
/usr/lib/rabbitmq/bin/rabbitmq-plugins list         //查看有哪些服務,插件安裝情況

RabbitMQ集羣

/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management       //啓動管理服務

RabbitMQ集羣

systemctl start rabbitmq-server.service        //開啓rabbitmq服務
netstat -ntap | grep 5672        //查看端口,其中15672和55672都是rabbitmq的管理端口,5672則是和生產者、消費者通信的端口

ln -s /usr/lib/rabbitmq/bin/* /usr/bin/          //方便管理,建立軟鏈接

RabbitMQ集羣

4、查看rabbitmq狀態,測試能否連接
rabbitmqctl cluster-status      //測試能否連接上

RabbitMQ集羣

5、修改.erlang.cookie文件

Rabbitmq的集羣是依賴於Erlang的集羣來工作的,所以必須先構建起Erlang的集羣環境。在Erlang的集羣中,各節點是通過一個magic cookie來實現的,這個cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的權限。所以必須保證各節點cookie保持一致,否則節點之間就無法通信

cd /var/lib/rabbitmq/ 
vim .erlang.cookie       
#.erlang.cookie是隱藏文件,使用ls -a查看,複製mq1的cookie,修改mq2,mq3與之相同
6、重啓rabbitmq服務,關閉防火牆
systemctl restart rabbitmq-server.service     //重啓   
systemctl stop firewalld.service 
setenforce 0           //關閉防火牆和安全功能
7、將mq2、mq3作爲內存節點與mq1磁盤節點連接起來,在mq2、mq3上執行如下命令
rabbitmqctl stop_app       //停止rabbitmq應用
rabbitmqctl join_cluster --ram rabbit@mq1      //調用cluster命令,將mq2連接到mq1,-ram以內存節點形式添加
rabbitmqctl start_app           //開啓rabbitmq應用

RabbitMQ集羣

8、在mq1上查看狀態
#mq1查看已連接
rabbitmqctl cluster_status

Cluster status of node rabbit@mq1 ...
[{nodes,[{disc,[rabbit@mq1]},{ram,[rabbit@mq3,rabbit@mq2]}]},
 {running_nodes,[rabbit@mq3,rabbit@mq2,rabbit@mq1]},
 {cluster_name,<<"rabbit@mq1">>},
 {partitions,[]}]
...done.

RabbitMQ集羣

以上便完成了配置RabbitMQ默認集羣模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章