一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Rabbitmq集群高可用部署詳細

 三十的狼 2021-03-11

序言

清風萬里的季節(jié),周末本該和親人朋友一起消遣這爛漫的花花草草,或是懶洋洋的曬個太陽聽聽風聲鳥鳴。無奈工作使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦代碼,程序狗的世界一片黯然,一片黯然,愿天下所有努力的程序狗都夢想成真吧!!

回到正題,為什么搭建rabbitmq集群?rabbitmq集群有那些模式?如何搭建Rabbitmq集群?rabbitmq鏡像高可用策略有那些?

1、首先這款產(chǎn)品本身的優(yōu)點眾多,大家最看好的便是他的異步化提高系統(tǒng)抗峰值能力,然后便是系統(tǒng)及功能結(jié)構(gòu)解耦,那么照此兩點來說,他的在整個系統(tǒng)中的作用還是至關(guān)重要的,那么如此重要,當然要考慮他的高可用性,那么便有啦第一個問題的解答。

2、rabbitmq有3種模式,但集群模式是2種。詳細如下:

  • 單一模式:即單機情況不做集群,就單獨運行一個rabbitmq而已。
  • 普通模式:默認模式,以兩個節(jié)點(rabbit01、rabbit02)為例來進行說明。對于Queue來說,消息實體只存在于其中一個節(jié)點rabbit01(或者rabbit02),rabbit01和rabbit02兩個節(jié)點僅有相同的元數(shù)據(jù),即隊列的結(jié)構(gòu)。當消息進入rabbit01節(jié)點的Queue后,consumer從rabbit02節(jié)點消費時,RabbitMQ會臨時在rabbit01、rabbit02間進行消息傳輸,把A中的消息實體取出并經(jīng)過B發(fā)送給consumer。所以consumer應(yīng)盡量連接每一個節(jié)點,從中取消息。即對于同一個邏輯隊列,要在多個節(jié)點建立物理Queue。否則無論consumer連rabbit01或rabbit02,出口總在rabbit01,會產(chǎn)生瓶頸。當rabbit01節(jié)點故障后,rabbit02節(jié)點無法取到rabbit01節(jié)點中還未消費的消息實體。如果做了消息持久化,那么得等rabbit01節(jié)點恢復,然后才可被消費;如果沒有持久化的話,就會產(chǎn)生消息丟失的現(xiàn)象。
  • 鏡像模式:把需要的隊列做成鏡像隊列,存在與多個節(jié)點屬于RabbitMQ的HA方案該模式解決了普通模式中的問題,其實質(zhì)和普通模式不同之處在于,消息實體會主動在鏡像節(jié)點間同步,而不是在客戶端取數(shù)據(jù)時臨時拉取。該模式帶來的副作用也很明顯,除了降低系統(tǒng)性能外,如果鏡像隊列數(shù)量過多,加之大量的消息進入,集群內(nèi)部的網(wǎng)絡(luò)帶寬將會被這種同步通訊大大消耗掉。所以在對可靠性要求較高的場合中適用。

準備集群環(huán)境安裝RabbitMQ

我的環(huán)境如下:

1、兩臺Centos7的機器,hostname分別為:F , G .

2、IP地址分別為:F—172.18.8.229 , G—172.18.8.224。

3、修改hosts文件如下,下面是G這臺機器的hosts文件內(nèi)容,F(xiàn)也需要如下配置:

復制代碼
[root@G bin]# cat /etc/hosts
127.0.0.1 G  localhost localhost.localdomain localhost4 localhost4.localdomain4 
::1       G  localhost localhost.localdomain localhost6 localhost6.localdomain6 

172.18.8.224 G
172.18.8.229 F
復制代碼

4、保證兩臺機器都能夠相互ping通,如下圖:

好啦,環(huán)境到此就就能滿足啦,接下來我們把rabbitmq裝在2臺機器上。

學習不看官方文檔,那就別學啦,地址如下:http://www./install-rpm.html

安裝rabbitmq依賴erlang環(huán)境,所以我們要先安裝erlang環(huán)境。

安裝完成之后,下載rabbitmq的rpm包ivh即可。如果實在不會安裝,Linux系統(tǒng)(二)軟件的安裝與卸載 里面有安裝rabbitmq的實例,看官笑納,實在不會裝那加入左上方群,或者點擊網(wǎng)頁右上方的X吧,一定要相信不是你的錯,是你與rabbitmq緣分不到。

安裝啟動過程中如果出現(xiàn)error,那可參考下面幾個方案試試:

  • vim /etc/rabbitmq/enable_plugins :刪除文件中的內(nèi)容。
  • 查看hosts文件是否配置完善,相互是否可以ping通
  • 查看相關(guān)端口是否被占用,如若占用kill掉
  • 如果已經(jīng)集群,那么要查看所有集群中的/var/lib/rabbitmq/.erlang.cookie是否一致。
  • 如果不存在上述文件,echo $HOME ,打開此文件夾,查看cookie文件是否一致。
  • 重啟電腦,防止緩存數(shù)據(jù)配置未更新過來。

這里安裝啟動成功之后,來幾個常用的操作。

復制代碼
[root@G bin]# ./rabbitmq-server -deched  --后臺啟動服務(wù)
[root@G bin]# ./rabbitmqctl start_app  --啟動服務(wù)
[root@G bin]# ./rabbitmqctl stop_app  --關(guān)閉服務(wù)
[root@G bin]# ./rabbitmq-plugins enable rabbitmq_management --啟動web管理插件
[root@G bin]# ./rabbitmqctl add_user zlh zlh  --添加用戶,密碼
[root@G bin]# ./rabbitmqctl set_user_tags zlh administrator --設(shè)置zlh為administrator權(quán)限
復制代碼

如果你看到如下操作,即表明啟動成功啦,并且web管理頁面的插件也啟動成功,如果下面的6為0,則需要啟動web管理插件

那具體rabbitmqctl 的命令詳細還要看官網(wǎng)文檔:http://www./man/rabbitmqctl.1.man.html

搭建rabbitmq的一般模式集群

 在上述的兩臺機器上安裝rabbitmq完成之后,你可以看到你的機器中有如下1個文件。路徑在$HOME中或者在/var/lib/rabbitmq中,文件名稱為.erlang.cookie,他是一個隱藏文件。那么這文件存儲的內(nèi)容是什么,是做什么用的呢?

這樣說吧:RabbitMQ的集群是依賴erlang集群,而erlang集群是通過這個cookie進行通信認證的,因此我們做集群的第一步就是干cookie。怎么干?

1、必須使集群中也就是F,G這兩臺機器的.erlang.cookie文件中cookie值一致,且權(quán)限為owner只讀。

機器G中的Cookie: 機器F中的Cookie:

修改文件權(quán)限如下:

[root@F ~]# chmod 600 .erlang.cookie

2、查看集群狀態(tài),我的是已經(jīng)做好的。

復制代碼
[root@F bin]# ./rabbitmqctl cluster_status
Cluster status of node rabbit@F ...
[{nodes,[{disc,[rabbit@G]},{ram,[rabbit@F]}]},
 {running_nodes,[rabbit@G,rabbit@F]},
 {cluster_name,<<"rabbit@F">>},
 {partitions,[]},
 {alarms,[{rabbit@G,[]},{rabbit@F,[]}]}]
復制代碼

3、停止當前機器中rabbitmq的服務(wù)

[root@F bin]# ./rabbitmqctl stop_app

4、把G中的rabbitmq加入到集群中來

[root@F bin]# ./rabbitmqctl join_cluster --ram rabbit@G

5、開啟當前機器的rabbitmq服務(wù)

[root@F bin]# ./rabbitmqctl start_app

6、打開網(wǎng)頁管理頁面查看nodes

如此便可以啦,你可以做下測試,驗證下我們序言中說的普通模式的說明,那必須是杠杠對的。

搭建rabbitmq的鏡像高可用模式集群

寫到這里,接下來,有朋友要請我吃飯啦,我就速戰(zhàn)速決赴會去啦,即便如此該有的也會都有的。go,go,go。

這一節(jié)要參考的文檔是:http://www./ha.html

首先鏡像模式要依賴policy模塊,這個模塊是做什么用的呢?

policy中文來說是政策,策略的意思,那么他就是要設(shè)置,那些Exchanges或者queue的數(shù)據(jù)需要復制,同步,如何復制同步?對就是做這些的。

這里有點內(nèi)容的,我先上例子慢慢說:

[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

參數(shù)意思為:

ha-all:為策略名稱。

^:為匹配符,只有一個^代表匹配所有,^zlh為匹配名稱為zlh的exchanges或者queue。

ha-mode:為匹配類型,他分為3種模式:all-所有(所有的queue),exctly-部分(需配置ha-params參數(shù),此參數(shù)為int類型比如3,眾多集群中的隨機3臺機器),nodes-指定(需配置ha-params參數(shù),此參數(shù)為數(shù)組類型比如["3rabbit@F","rabbit@G"]這樣指定為F與G這2臺機器。)。

參考示例如下

當然在web管理界面也能配置:

配置完看隊列如下,其中表示ha-haall的說明用我的ha-haall策略啦,屬于鏡像模式,沒有表示的就是普通模式:

 

總結(jié)

接下來是大家最喜歡的總結(jié)內(nèi)容啦,內(nèi)容有二,如下:

1、希望能關(guān)注我其他的文章。

2、博客里面有沒有很清楚的說明白,或者你有更好的方式,那么歡迎加入左上方的2個交流群,我們一起學習探討。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲一区二区精品福利| 久久国内午夜福利直播| 亚洲精品高清国产一线久久| 国产熟女一区二区不卡| 亚洲国产综合久久天堂| 亚洲国产丝袜一区二区三区四| 亚洲国产成人精品一区刚刚| 99久久国产精品免费| 狠狠做五月深爱婷婷综合| 久久热在线免费视频精品| 在线免费国产一区二区三区| 国产传媒一区二区三区| 久久国产亚洲精品赲碰热| 丝袜诱惑一区二区三区| 翘臀少妇成人一区二区| 国产精品午夜福利免费阅读| 亚洲国产日韩欧美三级| 国产黄色高清内射熟女视频| 国产日韩欧美综合视频| 日本淫片一区二区三区| 激情丁香激情五月婷婷| 成人免费在线视频大香蕉| 亚洲最大的中文字幕在线视频| 国产亚洲系列91精品| 青草草在线视频免费视频| 91亚洲国产成人久久精品麻豆| 欧美性高清一区二区三区视频| 91精品国产综合久久精品| 不卡在线播放一区二区三区| 国产精品激情在线观看| 欧美一级日韩中文字幕| 欧美高潮喷吹一区二区| 国产一区二区在线免费| 免费久久一级欧美特大黄孕妇| 99久久无色码中文字幕免费| 国产又粗又猛又黄又爽视频免费| 大香蕉网国产在线观看av| 日本高清加勒比免费在线| 久久福利视频在线观看| 国产日韩熟女中文字幕| 国产91色综合久久高清|