RocketMQ(3) Rocket 集群

RocketMQ 集群模式分為四種:單 master、多 master多 master 多 slave 異步復(fù)制、多 master 多 slave 同步雙寫

四種集群模式

單 master

風(fēng)險(xiǎn)較大,一旦 broker 宕機(jī)或者重啟,將導(dǎo)致整個(gè)服務(wù)部可用。不建議線上環(huán)境使用

多 master

一個(gè)集群全部都是 master,沒有 slave

  • 優(yōu)點(diǎn)
    配置簡單,單個(gè) master 宕機(jī),或者重啟未付,對應(yīng)用沒有影響,在磁盤配置為 RAID10 時(shí),即是機(jī)器宕機(jī)不可恢復(fù)的情況,消息也不會(huì)丟失(異步刷盤會(huì)丟失少量消息,同步刷盤不會(huì)丟失消息),性能最高

  • 缺點(diǎn)
    單個(gè) broker 宕機(jī)期間,這臺(tái)機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱,消息的實(shí)時(shí)性會(huì)受到影響。

多 master 多 slave 異步復(fù)制

每個(gè) master 配置一個(gè) slave,有多對 master slave,HA 采用的是異步復(fù)制方式,主備有短暫的消息延遲(毫秒級),master 收到消息后立即向應(yīng)用返回成功標(biāo)志,同時(shí)向 slave 寫入消息。

  • 優(yōu)點(diǎn)
    即是磁盤損壞,消息丟失的非常少,且消息的實(shí)時(shí)性不會(huì)受到影響。因?yàn)?master 宕機(jī)后,消費(fèi)者仍然可以從 slave 消費(fèi),此過程對應(yīng)用透明,不需要人工干預(yù),性能同多個(gè) master 模式一樣

  • 缺點(diǎn)
    master 宕機(jī),磁盤損壞下,會(huì)丟失少量消息

多 master 多 slave 同步雙寫

每個(gè) master 配置一個(gè) slave,有多對 master slave,HA 采用同步雙寫模式,主備都成功才會(huì)返回成功

  • 優(yōu)點(diǎn)
    數(shù)據(jù)與服務(wù)都無單點(diǎn),master 宕機(jī)情況下,消息無延遲,服務(wù)可用性與數(shù)據(jù)可用性最高

  • 缺點(diǎn)
    性能比異步復(fù)制低 10% 左右,發(fā)送單個(gè) master 的 RT 會(huì)略高,主機(jī)宕機(jī)后,slave 不能自動(dòng)切換為主機(jī)(后續(xù)版本會(huì)支持)


一主一從

修改 master 配置

進(jìn)入 conf/2m-2s-async,修改文件:broker-a-s.properties:

rm -rf broker-a-s.properties 
cp broker-a.properties  broker-a-s.properties

然后打開 broker-a-s.properties,修改:

brokerId=1
brokerRole=SLAVE

修改兩個(gè)配置文件的 nameserver 為兩個(gè)服務(wù)器對應(yīng)的 nameserver 地址,多個(gè)地址用英文分號(hào)分割

修改 slave 配置

將 master 的 broker-a.properties、broker-a-s.properties 同步過來,在 master 上執(zhí)行

scp broker-a.properties 192.168.52.201:/usr/local/include/mq/rocketmq/conf/2m-2s-async/
scp broker-a-s.properties 192.168.52.201:/usr/local/include/mq/rocketmq/conf/2m-2s-async/

啟動(dòng)集群

依次啟動(dòng) master、slave 的 nameserver

nohup ./bin/mqnamesrv &

在 master 上使用 broker-a.properties 啟動(dòng) broker

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-async/broker-a.properties > /dev/null 2>&1 &

在 slave 上使用 broker-a-s.properties 啟動(dòng) broker

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-async/broker-a-s.properties > /dev/null 2>&1 &

驗(yàn)證集群

在 rocketmq-console 中,修改 nameserver 配置:

rocketmq.config.namesrvAddr=192.168.52.200:9876;192.168.52.201:9876

啟動(dòng) console,并查看集群屬性


一主一從

缺陷

當(dāng)主節(jié)點(diǎn)掛掉后,消息將無法寫入


雙主雙從

雙主雙從,異步刷盤,同步復(fù)制(生產(chǎn)環(huán)境建議采用此方式)

集群搭建

準(zhǔn)備4份 RocketMQ 環(huán)境,修改配置文件 conf/2m-2s-sync/broker-a.properties,將 brokerRole 改為:SYNC_MASTER,flushDiskType 改為 ASYNC_FLUSH,nameserver 為四臺(tái)服務(wù)器的 nameserver 地址其他與之前 async 的配置一樣

修改 conf/2m-2s-sync/broker-a-s.0propertiesbrokerId 為大于 0 的值,brokerRoleSLAVE,nameserver 為四臺(tái)服務(wù)器的 nameserver 地址。

修改 conf/2m-2s-sync/broker-b.0properties、conf/2m-2s-sync/broker-b-2.0properties,與 a 的區(qū)別在與 brokerName 都為 broker-b

啟動(dòng)集群

每臺(tái)機(jī)器都啟動(dòng) nameserveer
nohup ./bin/mqnamesrv &

在第一臺(tái)機(jī)器上啟動(dòng) broker-a

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-sync/broker-a.properties > /dev/null 2>&1 &

在第二臺(tái)機(jī)器上啟動(dòng) broker-b

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-sync/broker-b.properties > /dev/null 2>&1 &

在第三臺(tái)機(jī)器上啟動(dòng) broker-a-s

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-sync/broker-a-s.properties > /dev/null 2>&1 &

在第四臺(tái)機(jī)器上啟動(dòng) broker-b-s

nohup sh ./bin/mqbroker -c /usr/local/include/mq/rocketmq/conf/2m-2s-sync/broker-b-s.properties > /dev/null 2>&1 &

驗(yàn)證集群

修改 rocket-console 的配置:rocketmq.config.namesrvAddr=192.168.52.200:9876;192.168.52.201:9876;192.168.52.202:9876;192.168.52.203:9876,啟動(dòng) console,打開 集群選項(xiàng)卡

雙主雙從-同步雙寫-異步刷盤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容