天天看點

[喵咪MQ(3)]RabbitMQ叢集安裝配置[喵咪MQ(3)]RabbitMQ叢集安裝配置w-blog部落格

[喵咪MQ(3)]RabbitMQ叢集安裝配置[喵咪MQ(3)]RabbitMQ叢集安裝配置w-blog部落格

在各項生産環境使用中,容災總是一個很重要的話題,如果單點故障會導緻整個系統奔潰或者是丢失資料是不是好氣好氣的,上司會追着你問這是怎麼了?你隻能說是我們沒有經驗什麼什麼元件故障了,這個是低級玩法,進階玩法是配置好叢集容災,告訴老闆死一兩台機器當機了沒有事沒有影響,是以我們今天就來講講rabbitmq的叢集模式...

附上:

rabbitmq通過ssh通道進行叢集直接的連結,這裡準備了兩台伺服器分别如下

192.168.0.1 主機名 rabbitmq-1

192.168.0.1 主機名 rabbitmq-2

首先我們需要在這兩台機器上配置好互相的host可以通過主機名進行通路

當我們可以ping通之後我們需要設定一下 erlang cookie 讓兩台機器保持同樣的 cookie 才能順利的建立叢集

先啟動雙方的rabbitmq

複制 rabbitmq-1 中 /var/lib/rabbitmq/.erlang.cookie 檔案中的值

粘貼到 rabbitmq-2 /var/lib/rabbitmq/.erlang.cookie中 使用:wq! 儲存

重新開機rabbitmq-2 rabbitmq服務

cookie我們已經配置好了 接下來需要把兩個叢集關聯起來

對 rabbitmq-1 節點做如下操作

這個是用來在rabbitmq1上執行的,這個也可以不執行,直接在節點伺服器執行下邊的腳本,不過得保證這個rabbitmq服務是正常啟動的.

rabbitmq-2 節點服務配置腳本

可以通過 rabbitmqctl cluster_status 檢視到如下狀态證明叢集已經配置成功

注意:建立好叢集之後需要重新配置一下使用者 配置的使用者會影響整個叢集

關于rabbitmq 叢集有兩大模式需要說明,一個是磁盤模式或記憶體模式,一個是普通模式和鏡像模式,我們先說磁盤和記憶體模式

磁盤模式故名思議,磁盤模式就是把資料持久化到磁盤讓整個服務重新開機時資料也不會丢,缺點是i/o吞吐依賴磁盤性能

記憶體模式也就是把資料存在記憶體空間中讀取寫入速度非常快,缺點是當重新開機服務記憶體中的資料會丢失

可以通過web管理界面看到各個節點的運作模式,也可以通過指令來改變節點運作模式但是注意叢集中必須有一個磁盤節點才能運作

[喵咪MQ(3)]RabbitMQ叢集安裝配置[喵咪MQ(3)]RabbitMQ叢集安裝配置w-blog部落格

普通模式就是預設模式,我們現在叢集有 a b 兩台伺服器,這個時候向a寫入了一條資料,然後連接配接b去讀取這條資料,b會先找到a去擷取這條資料然後傳回給使用者,b并不存儲向a寫入的資料,反過來也是如此向b寫入資料不會再a存儲

這樣看起來并沒有什麼問題,叢集不就是這樣嗎?但是會産生兩個問題

a 節點會去找b節點擷取資料 ,如果b節點死了怎麼辦

資料隻在b節點存儲b節點是記憶體模式不就丢了嗎

第二點比較好解決,都用磁盤模式,寫都隻寫磁盤模式的節點,雖然會降低性能但是沒法解決第一個問題,b節點死了資料就沒有來源了,這個時候就需要鏡像模式出手了

鏡像模式會在所有節點之間同步資料,也就是叢集中有一個節點存活就能正常的使用下去,一般我們會用磁盤節點專門做持久化,記憶體節點提供使用

配置鏡像模式隻需要在主節點運作如下指令:

在web管理界面隊列裡面也能夠判斷出來資料存儲在幾個節點上

[喵咪MQ(3)]RabbitMQ叢集安裝配置[喵咪MQ(3)]RabbitMQ叢集安裝配置w-blog部落格

不要盲目追求鏡像模式,鏡像模式節點之間同步資料也會帶來開銷是以更具場景來做出合理的判斷

關于rabbitmq的介紹,單機模式,叢集模式的博文以及列舉完了,在之後又在使用rabbitmq的心得以及一些有意思的地方,也會分享出啦和大家一起學習讨論,多謝大家的支援本小節就到這裡了....

注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!