Rabbitmq群集部署-創(chuàng)新互聯(lián)

博文大綱:
一、Rabbitmq概念
二、部署單臺Rabbitmq
三、部署Rabbitmq集群
四、單臺節(jié)點加入或退出群集配置

在東光等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、做網(wǎng)站 網(wǎng)站設(shè)計制作按需策劃設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),東光網(wǎng)站建設(shè)費用合理。

一、Rabbitmq概念

RabbitMQ是一個開源的靠AMQP協(xié)議實現(xiàn)的服務(wù),服務(wù)器端用Erlang語言編寫,支持多種客戶端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系統(tǒng)中存儲轉(zhuǎn)發(fā)消息,在易用性、擴展性、高可用性等方面表現(xiàn)不俗。
AMQP,即Advanced Message Queuing Protocol,高級消息隊列協(xié)議,是應(yīng)用層協(xié)議的一個開放標(biāo)準(zhǔn),為面向消息的中間件設(shè)計。消息中間件主要用于組件之間的解耦,消息的發(fā)送者無需知道消息使用者的存在,反之亦然。
它可以使對應(yīng)的客戶端(client)與對應(yīng)的消息中間件(broker)進(jìn)行交互。消息中間件發(fā)布者(publisher)那里收到消息(發(fā)布消息的應(yīng)用,也稱為producer),然后將他們轉(zhuǎn)發(fā)給消費者(consumers,處理消息的應(yīng)用)。由于AMQP是一個網(wǎng)絡(luò)協(xié)議,所以發(fā)布者、消費者以及消息中間件可以部署到不同的物理機器上。

Rabbitmq使用場景

消息隊列在實際應(yīng)用中常用在異步處理、應(yīng)用解耦、流量削鋒和消息通訊這四個場景。

二、部署單臺Rabbitmq

注:在開始之前,主機名最好為默認(rèn)的localhosts(如果不是,會在啟動rabbitmq時報錯,解決方法:重啟主機,再啟動rabbitmq)

可以自行在官網(wǎng)下載所需軟件,也可以下載我網(wǎng)盤中的rpm包,然后自行上傳至服務(wù)器。

下面這臺服務(wù)器的IP為192.168.20.2。

[root@localhost src]# ls      #確認(rèn)所需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 src]# 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 src]# chkconfig rabbitmq-server on   #rabbitmq加入開機自啟
[root@localhost src]# /etc/init.d/rabbitmq-server start    #啟動rabbitmq服務(wù)

確定rabbitmq正在運行:

[root@localhost src]# ps -ef | grep rabbitmq

上述命令返回的結(jié)果如下:

Rabbitmq群集部署

#開啟rabbitmq的web管理插件,以便可以通過瀏覽器進(jìn)行訪問
[root@localhost src]# rabbitmq-plugins enable rabbitmq_management
#創(chuàng)建登錄用戶
[root@localhost src]# rabbitmqctl add_user admin 123.com
#將創(chuàng)建的admin用戶添加至administrator組
[root@localhost src]# rabbitmqctl set_user_tags admin administrator

客戶端訪問rabbitmq服務(wù)器的15672端口,使用新創(chuàng)建的admin用戶進(jìn)行登錄,登錄成功后顯示如下:

Rabbitmq群集部署

能夠訪問成功,表示單臺rabbitmq就搭建完成了。

三、部署Rabbitmq集群

Rabbitmq集群大概分為兩種方式:
1、普通模式:默認(rèn)的集群模式,消息的尸體只存在一個節(jié)點上;
2、鏡像模式:把需要的隊列做成鏡像,存在于多個節(jié)點。
ha-mode:

  • all:列隊到所有節(jié)點;
  • exatly:隨機鏡像到其他節(jié)點上;
  • nodes:鏡像到指定節(jié)點上。

集群節(jié)點模式:
1、內(nèi)存節(jié)點:工作在內(nèi)存上;
2、磁盤節(jié)點:工作在磁盤上;
例外:內(nèi)存節(jié)點和磁盤節(jié)點共同存在,提高訪問速度的同時增加數(shù)據(jù)持久化。

相比內(nèi)存節(jié)點雖然不寫入磁盤,但是它執(zhí)行比磁盤節(jié)點要好,集群中,只需要一個磁盤來保存狀態(tài)就足夠了,如果集群中只有內(nèi)存節(jié)點,那么節(jié)點一旦宕機,所有的狀態(tài)、消息都會丟失,無法實現(xiàn)數(shù)據(jù)的持久化。

1、部署環(huán)境如下:

Rabbitmq群集部署

其中192.168.20.2是基于上面的單臺rabbitmq來做的。

2、安裝rabbitmq服務(wù)

在192.168.20.3和20.4兩個節(jié)點(20.5節(jié)點后面再用到)進(jìn)行以下操作,以便部署rabbitmq服務(wù):

#上傳所需rpm包
[root@localhost src]# ls      
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
#安裝rabbitmq
[root@localhost src]# 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 
#啟動rabbitmq并加入開機自啟
[root@localhost src]# /etc/init.d/rabbitmq-server start
[root@localhost src]# chkconfig rabbitmq-server on

3、配置主機192.168.20.2

[root@localhost ~]# tail -4 /etc/hosts     #配置本地解析(主機名直接寫想要自定義的即可)
192.168.20.2 rabbitmq01
192.168.20.3 rabbitmq02
192.168.20.4 rabbitmq03
192.168.20.5 rabbitmq04
#將hosts文件復(fù)制到其他節(jié)點
[root@localhost ~]# scp /etc/hosts root@192.168.20.3:/etc/
[root@localhost ~]# scp /etc/hosts root@192.168.20.4:/etc/
[root@localhost ~]# scp /etc/hosts root@192.168.20.5:/etc/
#將rabbitmq01的cookie節(jié)點信息復(fù)制到其他需要加入群集的節(jié)點
#部署群集的時候需要節(jié)點cookie信息一致
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.20.3:/var/lib/rabbitmq/
[root@localhost ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.20.4:/var/lib/rabbitmq/

4、重啟所有要加入群集的節(jié)點服務(wù)器

在所有要加入群集的服務(wù)器上執(zhí)行以下命令進(jìn)行重啟(包括rabbitmq01)。

[root@localhost ~]# init 6       #重啟后就會發(fā)現(xiàn)主機名已經(jīng)更改為hosts文件中定義的了

若重啟的時后被卡在某個界面,那么需要強制重啟。

[root@rabbitmq01 ~]# ps -ef | grep rabbit    #重啟后確定已經(jīng)啟動

5、在rabbitmq01上配置群集

[root@rabbitmq01 ~]# rabbitmqctl  stop_app   #停止rabbitmq節(jié)點服務(wù)
[root@rabbitmq01 ~]#  rabbitmqctl reset     #重置rabbitmq節(jié)點
[root@rabbitmq01 ~]# rabbitmqctl start_app    #啟動rabbit節(jié)點服務(wù)
Starting node rabbit@rabbitmq01 ... #復(fù)制返回的節(jié)點名稱

6、配置rabbitmq02、03加入rabbitmq01群集

[root@rabbitmq02 ~]# rabbitmqctl stop_app   #停止節(jié)點服務(wù)
[root@rabbitmq02 ~]# rabbitmqctl reset     #重置節(jié)點
[root@rabbitmq02 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01          #以內(nèi)存方式加入群集,后面是復(fù)制的rabbitmq01的節(jié)點名
[root@rabbitmq02 ~]# rabbitmqctl start_app   
[root@rabbitmq02 ~]# rabbitmq-plugins enable rabbitmq_management

7、在rabbitmq01上查看節(jié)點狀態(tài)

[root@rabbitmq01 ~]# rabbitmqctl cluster_status       #查看節(jié)點狀態(tài)
Cluster status of node rabbit@rabbitmq01 ...
[{nodes,[{disc,[rabbit@rabbitmq01]},
         {ram,[rabbit@rabbitmq03,rabbit@rabbitmq02]}]},
 {running_nodes,[rabbit@rabbitmq03,rabbit@rabbitmq02,rabbit@rabbitmq01]},
 {cluster_name,<<"rabbit@rabbitmq01">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbitmq03,[]},
          {rabbit@rabbitmq02,[]},
          {rabbit@rabbitmq01,[]}]}]
# rabbit01工作模式為磁盤節(jié)點;rabbit02和03為內(nèi)存節(jié)點模式
# running_nodes:正在運行的節(jié)點
# cluster_name:節(jié)點名稱
# alarms:發(fā)生問題時rabbit01、02、03會進(jìn)行報警

8、在rabbitmq創(chuàng)建管理用戶并加入管理組

由于節(jié)點被reset重置了,所以用戶也需要重新創(chuàng)建。

[root@rabbitmq01 ~]# rabbitmqctl add_user admin 123.com
[root@rabbitmq01 ~]# rabbitmqctl set_user_tags admin administrator

9、登錄web界面訪問

群集內(nèi)任意節(jié)點的IP+15672端口都可以進(jìn)行登錄:

可以在下面的頁面看到群集節(jié)點的信息:
Rabbitmq群集部署

10、配置web界面添加Vhost

Rabbitmq群集部署

進(jìn)入創(chuàng)建的虛擬主機:

Rabbitmq群集部署

然后配置如下:

Rabbitmq群集部署

設(shè)置完成后再次查看虛擬主機:

Rabbitmq群集部署

設(shè)置匹配策略:

Rabbitmq群集部署

發(fā)布消息:

Rabbitmq群集部署

設(shè)置發(fā)布消息內(nèi)容:

Rabbitmq群集部署

Rabbitmq群集部署

Rabbitmq群集部署

然后刷新當(dāng)前頁面,即可看到在當(dāng)前虛擬主機中的隊列總數(shù):

Rabbitmq群集部署

四、單臺節(jié)點加入或退出群集配置

1、節(jié)點加入群集

由于我在上面部署群集時,hosts文件已經(jīng)可以解析群集內(nèi)的節(jié)點,所以這里就省略解析了

#在節(jié)點192.168.20.5服務(wù)器上安裝rabbitmq并配置
[root@localhost src]# 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 src]# chkconfig rabbitmq-server on
[root@localhost src]# /etc/init.d/rabbitmq-server start
#將群集中的cookie信息復(fù)制到本地
[root@localhost src]# scp root@rabbitmq01:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
[root@localhost src]# init 6       #重啟本機
#加入群集
[root@rabbitmq04 ~]# rabbitmqctl stop_app
[root@rabbitmq04 ~]# rabbitmqctl reset
[root@rabbitmq04 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq01
#以內(nèi)存運行的方式加入群集,若要以磁盤的方式加入,省略“--ram”選項即可
[root@rabbitmq04 ~]# rabbitmqctl start_app
#開啟web管理頁面
[root@rabbitmq04 ~]# rabbitmq-plugins enable rabbitmq_management

查看web界面,確認(rèn)rabbitmq04加入到群集:

Rabbitmq群集部署

2、單節(jié)點退出群集

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

———————— 本文至此結(jié)束,感謝閱讀 ————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享文章:Rabbitmq群集部署-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://www.muchs.cn/article18/dhccgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、ChatGPT、響應(yīng)式網(wǎng)站網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司