Rabbitmq簡介及部署羣集

博文大綱:
一、MQ簡介
二、什麼是RabbitMQ?
三、安裝RabbitMQ
四、部署Rabbitmq集羣
1)部署環境
2)安裝rabbitmq服務
3)配置host文件,並將上述兩個節點加入集羣
4)rabbitmq01配置羣集並將rabbitmq02、03加入01羣集
5)訪問web界面
6)web頁面添加vhost
五、單臺節點加入或退出羣集
1)單節點加入集羣
2)單節點退出集羣

一、MQ簡介

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

二、什麼是RabbitMQ?

RabbitMQ是由Erlang語言編寫的實現了高級消息隊列協議(AMQP)的開源消息代理軟件(也可稱爲 面向消息的中間件)。支持Windows、Linux/Unix、MAC OS X操作系統和包括JAVA在內的多種編程語言。

AMQP,即Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,爲面向消息的中間件設計。基於此協議的客戶端與消息中間件可傳遞消息,並不受客戶端/中間件不同產品,不同的開發語言等條件的限制。

RabbitMQ使用場景:
1)異步處理;
2)應用解耦;
3)流量削峯;
4)消息通訊;

三、安裝RabbitMQ

所需軟件下載鏈接:https://pan.baidu.com/s/1vopw5bvLX4gUkabSthI0hw 提取碼:ng8c

[root@localhost ~]# ls      #確認所需RPM包
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
[root@localhost ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
#安裝RPM包
[root@localhost ~]# chkconfig rabbitmq-server on
#rabbitmq加入開機自啓
[root@localhost ~]# /etc/init.d/rabbitmq-server start
#啓動rabbitmq服務
[root@localhost ~]#  ps -ef | grep rabbitmq  
#確定rabbitmq正在運行,返回結果較多,省略
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
#開啓rabbitmq的web管理插件,以便可以通過瀏覽器進行訪問
[root@localhost ~]#  rabbitmqctl add_user admin 123.com
#創建登錄用戶
#默認WEB管理的登錄帳號和密碼統一爲:guest
[root@localhost ~]#  rabbitmqctl set_user_tags admin administrator
#將創建的admin用戶添加至administrator組

默認RabbitMQ擁有如下端口號:
Rabbitmq簡介及部署羣集
一般常用就15672和5672!

客戶端訪問:
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集

四、部署Rabbitmq集羣

Rabbitmq集羣大概分爲兩種方式:
1、普通模式:默認的集羣模式,消息的屍體只存在一個節點上;
2、鏡像模式:把需要的隊列做成鏡像,存在於多個節點。
ha-mode:
all:列隊到所有節點;
exatly:隨機鏡像到其他節點上;
nodes:鏡像到指定節點上。
集羣節點模式:
1、內存節點:工作在內存上;
2、磁盤節點:工作在磁盤上;
例外:內存節點和磁盤節點共同存在,提高訪問速度的同時增加數據持久化。

相比內存節點雖然不寫入磁盤,但是它執行比磁盤節點要好,集羣中,只需要一個磁盤來保存狀態就足夠了,如果集羣中只有內存節點,那麼節點一旦宕機,所有的狀態、消息都會丟失,無法實現數據的持久化。

1)部署環境

系統 IP地址 主機名
Centos 7 192.168.1.4 rabbitmq01
Centos 7 192.168.1.5 rabbitmq02
Centos 7 192.168.1.6 rabbitmq03
Centos 7 192.168.1.7 rabbitmq04

其中192.168.1.4就是基於上面的單臺rabbitmq做的。

2)安裝rabbitmq服務

在192.168.1.5和192.168.1.6兩個節點上部署,192.168.1.7稍後會用到!

[root@localhost ~]# ls      #確認所需RPM包
erlang-18.1-1.el6.x86_64.rpm
rabbitmq-server-3.6.6-1.el6.noarch.rpm
socat-1.7.3.2-2.el7.x86_64.rpm
[root@localhost ~]# yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
#安裝RPM包
[root@localhost ~]# chkconfig rabbitmq-server on
#rabbitmq加入開機自啓
[root@localhost ~]# /etc/init.d/rabbitmq-server start
#啓動rabbitmq服務

3)配置host文件,並將上述兩個節點加入集羣

[root@localhost ~]# echo -e "192.168.1.4 rabbitmq01\n192.168.1.5 rabbitmq02\n192.168.1.6 rabbitmq03\n192.168.1.7 rabbitmq04" >> /etc/hosts
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
[root@localhost ~]# scp /etc/hosts [email protected]:/etc/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
#將rabbitmq01的cookie節點信息複製到其他需要加入羣集的節點
#部署羣集的時候需要節點cookie信息一致

羣集中的所有節點都需重啓(包括rabbitmq01)。若重啓過程中卡在某個界面,需手動強制重啓!

[root@rabbitmq01 ~]# ps -ef | grep rabbitmq
#重啓後,主機名自動更新了,確認了rabbitmq正在運行

4)rabbitmq01配置羣集並將rabbitmq02、03加入01羣集

以下操作可以根據主機名進行區分了!

[root@rabbitmq01 ~]# rabbitmqctl  stop_app   #停止rabbitmq節點服務
[root@rabbitmq01 ~]#  rabbitmqctl reset     #重置rabbitmq節點
[root@rabbitmq01 ~]# rabbitmqctl start_app    #啓動rabbit節點服務
Starting node rabbit@rabbitmq01 ... #複製返回的節點名稱
###########以下操作 rabbitmq02、03都需執行###########
[root@rabbitmq02 ~]# rabbitmqctl stop_app   #停止節點服務
[root@rabbitmq02 ~]# rabbitmqctl reset     #重置節點
[root@rabbitmq02 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
#以內存方式加入羣集,後面是複製的rabbitmq01的節點名
[root@rabbitmq02 ~]# rabbitmqctl start_app   
[root@rabbitmq02 ~]# rabbitmq-plugins enable rabbitmq_management
#開啓rabbitmq的web管理插件,以便可以通過瀏覽器進行訪問
###########rabbitmq02、03執行完成後#################
[root@rabbitmq01 ~]#  rabbitmqctl cluster_status
#查看羣集狀態
Cluster status of node rabbit@rabbitmq01 ...
[{nodes,[{disc,[rabbit@rabbitmq01]},
         {ram,[rabbit@rabbitmq03,rabbit@rabbitmq02]}]},
 {running_nodes,[rabbit@rabbitmq02,rabbit@rabbitmq03,rabbit@rabbitmq01]},
 {cluster_name,<<"rabbit@rabbitmq01">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmq02,[]},
          {rabbit@rabbitmq03,[]},
          {rabbit@rabbitmq01,[]}]}]
# rabbit01工作模式爲磁盤節點;rabbit02和03爲內存節點模式
# running_nodes:正在運行的節點
# cluster_name:節點名稱
# alarms:發生問題時rabbit01、02、03會進行報警
#####由於剛纔rabbitmq01重置,所以需要重新創建用戶########
[root@rabbitmq01 ~]# rabbitmqctl add_user admin 123.com
[root@rabbitmq01 ~]# rabbitmqctl set_user_tags admin administrator

5)訪問web界面

羣集內任意節點的IP+15672端口都可以進行登錄訪問!
Rabbitmq簡介及部署羣集

6)web頁面添加vhost

Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集
設置匹配策略:
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集
設置發佈消息內容:
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集
Rabbitmq簡介及部署羣集

五、單臺節點加入或退出羣集

1)單節點加入集羣

由於我在上面部署羣集時,hosts文件已經可以解析羣集內的節點,所以這裏就省略解析了!

#############在192.168.1.7服務器上操作###################
[root@localhost ~]#  yum -y localinstall erlang-18.1-1.el6.x86_64.rpm rabbitmq-server-3.6.6-1.el6.noarch.rpm socat-1.7.3.2-2.el7.x86_64.rpm
[root@localhost ~]# chkconfig rabbitmq-server on
[root@localhost ~]#  /etc/init.d/rabbitmq-server start
[root@localhost ~]# scp root@rabbitmq01:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
#將羣集中的cookie信息複製到本地,之後重啓
[root@rabbitmq04 ~]# rabbitmqctl stop_app
[root@rabbitmq04 ~]# rabbitmqctl reset
[root@rabbitmq04 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
#以內存運行的方式加入羣集,若要以磁盤的方式加入,省略“--ram”選項即可
[root@rabbitmq04 ~]# rabbitmqctl start_app
#開啓web管理頁面
[root@rabbitmq04 ~]# rabbitmq-plugins enable rabbitmq_management

查看web界面:
Rabbitmq簡介及部署羣集

2)單節點退出集羣

[root@rabbitmq04 ~]# rabbitmqctl stop_app
#先在rabbitmq04上面停止節點
[root@rabbitmq01 ~]# rabbitmqctl -n rabbit@rabbitmq01 forget_cluster_node rabbit@rabbitmq04
#-n:指定節點名稱
#forget_cluster_node:後面跟要刪除的節點名稱
#回到主節點(rabbitmq01)上刪除節點

查看web界面:
Rabbitmq簡介及部署羣集

——————————本文到此結束,感謝閱讀—————————————

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