清風萬里的季節,週末本該和親人朋友一塊兒消遣這爛漫的花花草草,或是懶洋洋的曬個太陽聽聽風聲鳥鳴。無奈工做使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦代碼,程序狗的世界一片黯然,一片黯然,願天下全部努力的程序狗都夢想成真吧!!html
回到正題,爲何搭建rabbitmq集羣?rabbitmq集羣有那些模式?如何搭建Rabbitmq集羣?rabbitmq鏡像高可用策略有那些?node
一、首先這款產品自己的優勢衆多,你們最看好的即是他的異步化提升系統抗峯值能力,而後即是系統及功能結構解耦,那麼照此兩點來講,他的在整個系統中的做用仍是相當重要的,那麼如此重要,固然要考慮他的高可用性,那麼便有啦第一個問題的解答。web
二、rabbitmq有3種模式,但集羣模式是2種。詳細以下:vim
個人環境以下:數組
一、兩臺Centos7的機器,hostname分別爲:F , G .緩存
二、IP地址分別爲:F—172.18.8.229 , G—172.18.8.224。cookie
三、修改hosts文件以下,下面是G這臺機器的hosts文件內容,F也須要以下配置:網絡
[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
四、保證兩臺機器都可以相互ping通,以下圖:app
好啦,環境到此就就能知足啦,接下來咱們把rabbitmq裝在2臺機器上。dom
學習不看官方文檔,那就別學啦,地址以下:http://www.rabbitmq.com/install-rpm.html
安裝rabbitmq依賴erlang環境,因此咱們要先安裝erlang環境。
安裝完成以後,下載rabbitmq的rpm包ivh便可。若是實在不會安裝,Linux系統(二)軟件的安裝與卸載 裏面有安裝rabbitmq的實例,看官笑納,實在不會裝那加入左上方羣,或者點擊網頁右上方的X吧,必定要相信不是你的錯,是你與rabbitmq緣分不到。
安裝啓動過程當中若是出現error,那可參考下面幾個方案試試:
這裏安裝啓動成功以後,來幾個經常使用的操做。
[root@G bin]# ./rabbitmq-server -deched --後臺啓動服務 [root@G bin]# ./rabbitmqctl start_app --啓動服務 [root@G bin]# ./rabbitmqctl stop_app --關閉服務 [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 --設置zlh爲administrator權限
若是你看到以下操做,即代表啓動成功啦,而且web管理頁面的插件也啓動成功,若是下面的6爲0,則須要啓動web管理插件
那具體rabbitmqctl 的命令詳細還要看官網文檔:http://www.rabbitmq.com/man/rabbitmqctl.1.man.html
在上述的兩臺機器上安裝rabbitmq完成以後,你能夠看到你的機器中有以下1個文件。路徑在$HOME中或者在/var/lib/rabbitmq中,文件名稱爲.erlang.cookie,他是一個隱藏文件。那麼這文件存儲的內容是什麼,是作什麼用的呢?
這樣說吧:RabbitMQ的集羣是依賴erlang集羣,而erlang集羣是經過這個cookie進行通訊認證的,所以咱們作集羣的第一步就是幹cookie。怎麼幹?
一、必須使集羣中也就是F,G這兩臺機器的.erlang.cookie文件中cookie值一致,且權限爲owner只讀。
機器G中的Cookie: 機器F中的Cookie:
修改文件權限以下:
[root@F ~]# chmod 600 .erlang.cookie
二、查看集羣狀態,個人是已經作好的。
[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,[]}]}]
三、中止當前機器中rabbitmq的服務
[root@F bin]# ./rabbitmqctl stop_app
四、把G中的rabbitmq加入到集羣中來
[root@F bin]# ./rabbitmqctl join_cluster --ram rabbit@G
五、開啓當前機器的rabbitmq服務
[root@F bin]# ./rabbitmqctl start_app
六、打開網頁管理頁面查看nodes
如此即可以啦,你能夠作下測試,驗證下咱們序言中說的普通模式的說明,那必須是槓槓對的。
寫到這裏,接下來,有朋友要請我吃飯啦,我就速戰速決赴會去啦,即使如此該有的也會都有的。go,go,go。
這一節要參考的文檔是:http://www.rabbitmq.com/ha.html
首先鏡像模式要依賴policy模塊,這個模塊是作什麼用的呢?
policy中文來講是政策,策略的意思,那麼他就是要設置,那些Exchanges或者queue的數據須要複製,同步,如何複製同步?對就是作這些的。
這裏有點內容的,我先上例子慢慢說:
[root@G ~]# ./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
參數意思爲:
ha-all:爲策略名稱。
^:爲匹配符,只有一個^表明匹配全部,^zlh爲匹配名稱爲zlh的exchanges或者queue。
ha-mode:爲匹配類型,他分爲3種模式:all-全部(全部的queue),exctly-部分(需配置ha-params參數,此參數爲int類型好比3,衆多集羣中的隨機3臺機器),nodes-指定(需配置ha-params參數,此參數爲數組類型好比["3rabbit@F","rabbit@G"]這樣指定爲F與G這2臺機器。)。
參考示例以下
固然在web管理界面也能配置:
配置完看隊列以下,其中表示ha-haall的說明用個人ha-haall策略啦,屬於鏡像模式,沒有表示的就是普通模式:
接下來是你們最喜歡的總結內容啦,內容有二,以下:
一、但願能關注我其餘的文章。
二、博客裏面有沒有很清楚的說明白,或者你有更好的方式,那麼歡迎加入左上方的2個交流羣,咱們一塊兒學習探討。