您好,登錄后才能下訂單哦!
博文大綱:
一、MQ簡介
二、什么是RabbitMQ?
三、安裝RabbitMQ
四、部署Rabbitmq集群
1)部署環境
2)安裝rabbitmq服務
3)配置host文件,并將上述兩個節點加入集群
4)rabbitmq01配置群集并將rabbitmq02、03加入01群集
5)訪問web界面
6)web頁面添加vhost
五、單臺節點加入或退出群集
1)單節點加入集群
2)單節點退出集群
MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用于諸如遠程過程調用的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。
RabbitMQ是由Erlang語言編寫的實現了高級消息隊列協議(AMQP)的開源消息代理軟件(也可稱為 面向消息的中間件)。支持Windows、Linux/Unix、MAC OS X操作系統和包括JAVA在內的多種編程語言。
AMQP,即Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。基于此協議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產品,不同的開發語言等條件的限制。
RabbitMQ使用場景:
1)異步處理;
2)應用解耦;
3)流量削峰;
4)消息通訊;
所需軟件下載鏈接: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擁有如下端口號:
一般常用就15672和5672!
客戶端訪問:
Rabbitmq集群大概分為兩種方式:
1、普通模式:默認的集群模式,消息的尸體只存在一個節點上;
2、鏡像模式:把需要的隊列做成鏡像,存在于多個節點。
ha-mode:
all:列隊到所有節點;
exatly:隨機鏡像到其他節點上;
nodes:鏡像到指定節點上。
集群節點模式:
1、內存節點:工作在內存上;
2、磁盤節點:工作在磁盤上;
例外:內存節點和磁盤節點共同存在,提高訪問速度的同時增加數據持久化。
相比內存節點雖然不寫入磁盤,但是它執行比磁盤節點要好,集群中,只需要一個磁盤來保存狀態就足夠了,如果集群中只有內存節點,那么節點一旦宕機,所有的狀態、消息都會丟失,無法實現數據的持久化。
系統 | 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做的。
在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服務
[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 root@192.168.1.5:/etc/
[root@localhost ~]# scp /etc/hosts root@192.168.1.6:/etc/
[root@localhost ~]# scp /etc/hosts root@192.168.1.7:/etc/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.5:/var/lib/rabbitmq/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.6:/var/lib/rabbitmq/
#將rabbitmq01的cookie節點信息復制到其他需要加入群集的節點
#部署群集的時候需要節點cookie信息一致
群集中的所有節點都需重啟(包括rabbitmq01)。若重啟過程中卡在某個界面,需手動強制重啟!
[root@rabbitmq01 ~]# ps -ef | grep rabbitmq
#重啟后,主機名自動更新了,確認了rabbitmq正在運行
以下操作可以根據主機名進行區分了!
[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
群集內任意節點的IP+15672端口都可以進行登錄訪問!
設置匹配策略:
設置發布消息內容:
由于我在上面部署群集時,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界面:
[root@rabbitmq04 ~]# rabbitmqctl stop_app
#先在rabbitmq04上面停止節點
[root@rabbitmq01 ~]# rabbitmqctl -n rabbit@rabbitmq01 forget_cluster_node rabbit@rabbitmq04
#-n:指定節點名稱
#forget_cluster_node:后面跟要刪除的節點名稱
#回到主節點(rabbitmq01)上刪除節點
查看web界面:
——————————本文到此結束,感謝閱讀—————————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。