1. 程式人生 > >構建RabbitMQ消息隊列群集

構建RabbitMQ消息隊列群集

ice 訂閱 mark type com fig 模型 準備工作 消息

簡介

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

特點

MQ是消費-生產者模型的一個典型的代表,一端往消息隊列中不斷寫入消息,而另一端則可以讀取或者訂閱隊列中的消息。MQ和JMS類似,但不同的是JMS是SUN JAVA消息中間件服務的一個標準和API定義,而MQ則是遵循了AMQP協議的具體實現和產品。

實驗環境

主機名 IP地址 操作系統 用途
mq01 192.168.100.75 CentOS_7.4_x86_64 磁盤節點
mq02 192.168.100.76 CentOS_7.4_x86_64 內存節點
mq03 192.168.100.77 CentOS_7.4_x86_64 內存節點

搭建步驟

一、準備工作

1、關閉防火墻及selinux

[root@redhat7_5 ~]# systemctl stop firewalld.service
[root@redhat7_5 ~]# systemctl disable firewalld.servic
[root@mq01 ~]# vim /etc/sysconfig/selinux

技術分享圖片

2、修改主機名及hosts文件

[root@redhat7_5 ~]# vim /etc/hostname

mq01.localdomain  #添加主機名,第一臺mq01依次為mq02、mq03

[root@redhat7_5 ~]# vim /etc/hosts #其他三臺都是這樣配

#末行添加
192.168.100.75 mq01
192.168.100.76 mq02
192.168.100.77 mq03

[root@redhat7_5 ~]# shutdown -r now #重啟服務

二、配置RabbtiMQ(三臺配置相同)

1、安裝RobbtiMQ軟件

[root@mq01 ~]# yum -y install epel-release #安裝epel源文件

[root@mq01 ~]# yum -y install rabbitmq-server #安裝rabbtimq服務器端

2、優化路徑

[root@mq01 ~]# ln -s /usr/lib/rabbitmq/bin/* /usr/bin/ #優化路徑

3、啟動相關服務

[root@mq01 ~]# rabbitmq-plugins enable rabbitmq_management #啟動web端管理服務
技術分享圖片

[root@mq01 ~]# systemctl start rabbitmq-server.service #啟動rabbitmq服務

[root@mq01 ~]# rabbitmq-plugins list #查看rabbitmq安裝模塊及其版本號

[root@mq01 ~]# rabbitmqctl cluster_status #檢查三臺的集群狀態,目前相互獨立,沒有形成集群。

Cluster status of node rabbit@mq01 …  
[{nodes,[{disc,[rabbit@mq01]}]},
 {running_nodes,[rabbit@mq01]},
 {cluster_name,<<"rabbit@mq01">>},
 {partitions,[]}]
...done.

[root@mq01 ~]# netstat -anpt | grep 5672 #查看端口號
技術分享圖片

三、構建群集(三臺都配置相同)

1、編輯cookie id

[root@mq01 ~]# systemctl stop rabbitmq-server.service #停止三臺服務

[root@mq01 ~]# vim /var/lib/rabbitmq/.erlang.cookie #三臺值配置成一樣的,將mq01的cookie id 復制內容到其他兩臺

ORPMEUFAADFUFEXAUHIJ

[root@mq01 ~]# systemctl start rabbitmq-server #啟動三臺服務

2、配置群集

[root@mq02 ~]# rabbitmqctl stop_app #兩臺內存節點操
Stopping node rabbit@mq02 ...
...done.

[root@mq02 ~]# rabbitmqctl join_cluster --ram rabbit@mq01 #以內存節點形式加入到磁盤節點

rabbitmqctl start_app

[root@mq01 ~]# rabbitmqctl cluster_status

Cluster status of node rabbit@mq01 ...
[{nodes,[{disc,[rabbit@mq01]},{ram,[rabbit@mq03,rabbit@mq02]}]},  #mq01屬於磁盤節點,mq02、mq03屬於內存節點
 {running_nodes,[rabbit@mq03,rabbit@mq02,rabbit@mq01]},             #顯示各節點,構成了群集
 {cluster_name,<<"rabbit@mq01">>},
 {partitions,[]}]
...done.

3、登錄訪問

http://192.168.100.76:15672/

技術分享圖片

技術分享圖片

構建RabbitMQ消息隊列群集