真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

RocketMQ-雙主雙從集群+DashBorad搭建(云服務(wù)器)-創(chuàng)新互聯(lián)

文章目錄
  • 一、理論墊基礎(chǔ)
    • 1. NameServer 集群
    • 2. Producer集群
    • 3. Consumer集群
    • 4. Broker集群
      • 4.1 節(jié)點(diǎn)間數(shù)據(jù)同步 以及 消息的持久化
      • 4.2 Broker的集群模式
        • 4.2.1、單Master模式
        • 4.2.2、多Master模式
        • 4.2.3、多Master多Slave模式-異步復(fù)制
        • 4.2.4、多Master多Slave模式-同步雙寫
        • 最佳實(shí)踐
      • 4.3 RAID(補(bǔ)充知識(shí))
        • 4.3.1 關(guān)鍵技術(shù)
  • 二、雙主雙從集群搭建【云服務(wù)器實(shí)戰(zhàn)】
    • 1. 環(huán)境準(zhǔn)備
      • 第一步、Host添加信息
      • 第二步、配置防火墻
      • 第三步、配置環(huán)境變量
      • 第四步、創(chuàng)建消息存儲(chǔ)路徑
    • 2. Broker 配置文件
      • 第一步、配置 Master1
      • 第二步、配置 Slave2
      • 第三步、配置 Master2
      • 第四步、配置 Slave1
    • 3. 服務(wù)啟動(dòng)
      • 第一步、啟動(dòng)NameServer集群
      • 第二步、啟動(dòng)Broker集群
      • 第三步、驗(yàn)收
    • 4. 集群監(jiān)控平臺(tái)搭建
      • 第一步、下載并解壓
      • 第二步、修改配置文件
      • 第三步、編譯打包并部署

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的鶴城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!一、理論墊基礎(chǔ)

在上一期中我們提到了RocketMQ的一些基礎(chǔ)知識(shí),在本篇博客中基于理論實(shí)戰(zhàn)部署一下吧~
在這里插入圖片描述
由RocketMQ網(wǎng)絡(luò)部署圖得知,RocketMQ中主要涉及到四種角色:NameServer注冊(cè)服務(wù)器、Broker服務(wù)器、Producer生產(chǎn)者、Consumer消費(fèi)者。每種角色都可以單獨(dú)搭建集群,下面我們?cè)敿?xì)介紹一個(gè)NameServer集群、Broker集群、Producer集群、Consumer集群。

1. NameServer 集群

NameServer通常會(huì)有多個(gè)實(shí)例部署,不過 NameServer 是無(wú)狀態(tài)的,即 NameServer 集群中的各個(gè)節(jié)點(diǎn)間是無(wú)差異的,各節(jié)點(diǎn)間相互不進(jìn)行信息通訊。在 NameServer 內(nèi)部維護(hù)著一個(gè) Broker 列表,用來(lái)動(dòng)態(tài)存儲(chǔ) Broker的信息。當(dāng) Broker 節(jié)點(diǎn)啟動(dòng)時(shí),會(huì)輪詢 NameServer 列表,與每個(gè) NameServer 節(jié)點(diǎn)建立長(zhǎng)連接,并發(fā)起 注冊(cè)請(qǐng)求。所以每一個(gè)NameServer實(shí)例上面都保存一份完整的路由信息。當(dāng)某個(gè)NameServer因某種原因下線了,客戶端仍然可以向其它NameServer獲取路由信息。

2. Producer集群

Producer 與 NameServer集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長(zhǎng)連接,定期從 NameServer 取 Topic 路由信息,并向提供 Topic 服務(wù)的 Master 建立長(zhǎng)連接,且定時(shí)向Master發(fā)送心跳。Producer完全無(wú)狀態(tài),可集群部署。

3. Consumer集群

Consumer 與 NameServer 集群中的其中一個(gè)節(jié)點(diǎn)(隨機(jī)選擇)建立長(zhǎng)連接,定期從 NameServer 取 Topic 路由信息,并向提供 Topic服務(wù)的Master、Slave建立長(zhǎng)連接,且定時(shí)向Master、Slave發(fā)送心跳。Consumer既可以從Master訂閱消息,也可以從 Slave 訂閱消息,訂閱規(guī)則由 Broker 配置決定。

4. Broker集群

對(duì)于整個(gè)RocketMQ集群的部署,Name server、producer、consumer之間都是無(wú)狀態(tài)的,集群中的每個(gè)節(jié)點(diǎn)都是一樣的。

Broker 的部署相對(duì)復(fù)雜,Broker分為Master與Slave,一個(gè)Master可以對(duì)應(yīng)多個(gè)Slave,但是一個(gè)Slave只能對(duì)應(yīng)一個(gè)Master。Master與Slave的對(duì)應(yīng)關(guān)系通過指定相同的BrokerName,即多個(gè)節(jié)點(diǎn)指定相同的BrokerName表示是同一組的。節(jié)點(diǎn)的區(qū)分是由不同的BrokerId來(lái)定義,BrokerId為0表示Master,非0表示Slave。Master也可以部署多個(gè)。每個(gè)Broker與NameServer集群中的所有節(jié)點(diǎn)建立長(zhǎng)連接,定期注冊(cè)Topic信息到所有NameServer。

4.1 節(jié)點(diǎn)間數(shù)據(jù)同步 以及 消息的持久化

在這里插入圖片描述

復(fù)制策略

既然 Broker 分為主從節(jié)點(diǎn),那么Master與Slave 之間是如何進(jìn)行數(shù)據(jù)同步呢?

關(guān)于 Broker 的Master與Slave間的數(shù)據(jù)同步方式我們稱為復(fù)制策略,分為同步復(fù)制與異步復(fù)制兩種方式。

  • 同步復(fù)制,即消息寫入Master后,Master會(huì)等待Slave同步數(shù)據(jù)成功后才向Producer返回成功ACK;
  • 異步復(fù)制,即消息寫入Master后,Master立即向Producer返回成功ACK,無(wú)需等待Slave同步數(shù)據(jù)成功。

其中異步復(fù)制策略會(huì)降低系統(tǒng)的寫入延遲,RT變小,提高了系統(tǒng)的吞吐量。

刷盤策略

當(dāng)消息發(fā)送到broker內(nèi)存后消息如何持久化到磁盤呢?

刷盤策略,指的是Broker中消息的落盤方式,即消息發(fā)送到Broker內(nèi)存后消息持久化到磁盤的方式。也分為同步刷盤與異步刷盤兩種方式。

  • 同步刷盤,即當(dāng)消息持久化到Broker的磁盤后才算是消息寫入成功;
  • 異步刷盤,即當(dāng)消息寫入到Broker的內(nèi)存后即表示消息寫入成功,無(wú)需等待消息持久化到磁盤。

消息寫入到Broker的內(nèi)存,一般是寫入了PageCache。對(duì)于異步刷盤策略,消息會(huì)寫入到PageCache后立即返回成功ACK,但并不會(huì)立即做落盤操作,而是當(dāng)PageCache到達(dá)一定量時(shí)才會(huì)自動(dòng)進(jìn)行落盤。異步刷盤策略會(huì)降低系統(tǒng)的寫入延遲,RT變小,提高了系統(tǒng)的吞吐量。

4.2 Broker的集群模式

根據(jù)Broker集群中各個(gè)節(jié)點(diǎn)間關(guān)系的不同,Broker集群可以分為以下幾類:

4.2.1、單Master模式

只有一個(gè) Broker (其本質(zhì)上就不能稱為集群) .

這種方式風(fēng)險(xiǎn)較大,一旦Broker重啟或者宕機(jī)時(shí),會(huì)導(dǎo)致整個(gè)服務(wù)不可用。不建議線上環(huán)境使用,可以用于本地測(cè)試。

4.2.2、多Master模式

broker集群僅由多個(gè)master構(gòu)成,不存在Slave。

同一Topic的各個(gè)Queue會(huì)平均分布在各個(gè)master節(jié)點(diǎn)上。

  • 優(yōu)點(diǎn):配置簡(jiǎn)單,單個(gè)Master宕機(jī)或重啟維護(hù)對(duì)應(yīng)用無(wú)影響,在磁盤配置為RAID10時(shí),即使機(jī)器 宕機(jī)不可恢復(fù)情況下,由于RAID10盤非??煽?,消息也不會(huì)丟(異步刷盤丟失少量消息,同步 刷盤一條不丟),性能最高;
    (以上優(yōu)點(diǎn)的前提是,這些Master都配置了RAID磁盤陣列。如果沒有配置,一旦出現(xiàn)某Master宕機(jī),則會(huì)發(fā)生大量消息丟失的情況。)
  • 缺點(diǎn):?jiǎn)闻_(tái)機(jī)器宕機(jī)期間,這臺(tái)機(jī)器上未被消費(fèi)的消息在機(jī)器恢復(fù)之前不可訂閱(不可消費(fèi)), 消息實(shí)時(shí)性會(huì)受到影響。
4.2.3、多Master多Slave模式-異步復(fù)制

? broker集群由多個(gè)master構(gòu)成,每個(gè)master又配置了多個(gè)slave(在配置了RAID磁盤陣列的情況下,一 個(gè)master一般配置一個(gè)slave即可)。

master與slave的關(guān)系是主備關(guān)系:

  • master負(fù)責(zé)處理消息的讀寫請(qǐng)求 ;
  • slave僅負(fù)責(zé)消息的備份與master宕機(jī)后的角色切換。

HA采用異步復(fù)制方式,主備之間有短暫消息延遲(毫秒級(jí)),這種模式的優(yōu)缺點(diǎn)如下:

  • 優(yōu)點(diǎn):即使磁盤損壞,消息丟失的非常少,且消息實(shí)時(shí)性不會(huì)受影響,同時(shí)Master宕機(jī)后,消費(fèi)者仍然可以從Slave消費(fèi),而且此過程對(duì)應(yīng)透明,不需要人工干預(yù),性能同多Master模式一樣。
  • 缺點(diǎn):Master宕機(jī),磁盤損壞情況下會(huì)丟失少量消息。

?異步復(fù)制即前面所講的復(fù)制策略中的異步復(fù)制策略,即消息寫入master成功后,master立即向producer返回成功ACK,無(wú)需等待slave同步數(shù)據(jù)成功。 該模式的大特點(diǎn)之一是,當(dāng)master宕機(jī)后slave能夠自動(dòng)切換為master。不過由于slave從master的同步具有短暫的延遲(毫秒級(jí)),所以當(dāng)master宕機(jī)后,這種異步復(fù)制方式可能會(huì)存在少量消息的丟失問題。( Slave從Master同步的延遲越短,其可能丟失的消息就越少對(duì)于Master的RAID磁盤陣列,若使用的也是異步復(fù)制策略,同樣也存在延遲問題,同樣也可能會(huì)丟失消息。但RAID陣列的秘訣是微秒級(jí)的(因?yàn)槭怯捎脖P支持的),所以其丟失的數(shù)據(jù)量會(huì)更少。)

4.2.4、多Master多Slave模式-同步雙寫

? 該模式是多Master多Slave模式的 同步復(fù)制 實(shí)現(xiàn)。所謂同步雙寫,指的是消息寫入master成功后, master會(huì)等待slave同步數(shù)據(jù)成功后才向producer返回成功ACK,即: master與slave都要寫入成功后才會(huì)返回成功ACK,也即雙寫。

? 該模式與異步復(fù)制模式相比,優(yōu)點(diǎn)是消息的安全性更高,不存在消息丟失的情況。但單個(gè)消息的RT略高,從而導(dǎo)致性能要略低(大約低10%)。 該模式存在一個(gè)大的問題:對(duì)于目前的版本,Master宕機(jī)后,Slave不會(huì)自動(dòng)切換到Master。

最佳實(shí)踐

一般會(huì) 為Master配置RAID10磁盤陣列,然后再為其配置一個(gè)Slave。 即利用了RAID10磁盤陣列的高效、安全性,又解決了可能會(huì)影響訂閱的問題。

  1. RAID磁盤陣列的效率要高于Master-Slave集群。因?yàn)镽AID是硬件支持的。也正因?yàn)槿绱耍?所以RAID陣列的搭建成本較高。
  2. 多Master+RAID陣列,與多Master多Slave集群的區(qū)別是什么?
    • 多Master+RAID陣列,其僅僅可以保證數(shù)據(jù)不丟失,即不影響消息寫入,但其可能會(huì)影響到消息的訂閱。但其執(zhí)行效率要遠(yuǎn)高于多Master多Slave集群
    • 多Master多Slave集群,其不僅可以保證數(shù)據(jù)不丟失,也不會(huì)影響消息寫入。其運(yùn)行效率要低 于多Master+RAID陣列
4.3 RAID(補(bǔ)充知識(shí))

關(guān)于RAID相關(guān)的知識(shí)科班同學(xué)可以跳過啦~

RAID歷史

? 1988 年美國(guó)加州大學(xué)伯克利分校的 D. A. Patterson 教授等首次在論文 “A Case of Redundant Array of Inexpensive Disks” 中提出RAID 概念 ,即廉價(jià)冗余磁盤陣列( Redundant Arrayof Inexpensive Disks )。由于當(dāng)時(shí)大容量磁盤比較昂貴, RAID 的基本思想是將多個(gè)容量較小、相對(duì)廉價(jià)的磁盤進(jìn)行有機(jī)組合,從而以較低的成本獲得與昂貴大容量磁盤相當(dāng)?shù)娜萘?、性能、可靠性。隨著磁盤成本和價(jià)格的不斷降低, “廉價(jià)” 已經(jīng)毫無(wú)意義。因此, RAID咨詢委員會(huì)( RAID Advisory Board, RAB )決定用 “ 獨(dú)立 ” 替代 “ 廉價(jià) ” ,于時(shí) RAID 變成了獨(dú)立磁盤冗余陣列( Redundant Array of Independent Disks )。但這僅僅是名稱的變化,實(shí)質(zhì)內(nèi)容沒有改變。

RAID等級(jí)

? RAID這種設(shè)計(jì)思想很快被業(yè)界接納, RAID技術(shù)作為高性能、高可靠的存儲(chǔ)技術(shù),得到了非常廣泛的應(yīng)用。 RAID主要利用鏡像、數(shù)據(jù)條帶和數(shù)據(jù)校驗(yàn)三種技術(shù)來(lái)獲取高性能、可靠性、容錯(cuò)能力和擴(kuò)展性,根據(jù)對(duì)這三種技術(shù)的使用策略和組合架構(gòu),可以把 RAID分為不同的等級(jí),以滿足不同數(shù)據(jù)應(yīng)用的需求。
? D. A. Patterson 等的論文中定義了 RAID0 ~ RAID6 原始 RAID 等級(jí)。隨后存儲(chǔ)廠商又不斷推出 RAID7 、 RAID10、RAID01 、 RAID50 、 RAID53 、 RAID100 等 RAID 等級(jí),但這些并無(wú)統(tǒng)一的標(biāo)準(zhǔn)。目前業(yè)界與學(xué)術(shù)界公認(rèn)的標(biāo)準(zhǔn)是 RAID0 ~ RAID6 ,而在實(shí)際應(yīng)用領(lǐng)域中使用最多的 RAID 等級(jí)是 RAID0 、 RAID1 、 RAID3 、 RAID5 、 RAID6 和 RAID10。 RAID每一個(gè)等級(jí)代表一種實(shí)現(xiàn)方法和技術(shù),等級(jí)之間并無(wú)高低之分。在實(shí)際應(yīng)用中,應(yīng)當(dāng)根據(jù)用戶的數(shù)據(jù)應(yīng)用特點(diǎn),綜合考慮可用性、性能和成本來(lái)選擇合適的RAID 等級(jí),以及具體的實(shí)現(xiàn)方式。

4.3.1 關(guān)鍵技術(shù)

鏡像技術(shù)

? 鏡像技術(shù)是一種冗余技術(shù),為磁盤提供數(shù)據(jù)備份功能,防止磁盤發(fā)生故障而造成數(shù)據(jù)丟失。

? 對(duì)于 RAID 而言,采用鏡像技術(shù)最典型地的用法就是,同時(shí)在磁盤陣列中產(chǎn)生兩個(gè)完全相同的數(shù)據(jù)副本,并且分布在兩個(gè)不同的磁盤上。鏡像提供了完全的數(shù)據(jù)冗余能力,當(dāng)一個(gè)數(shù)據(jù)副本失效不可用時(shí),外部系統(tǒng)仍可 正常訪問另一副本,不會(huì)對(duì)應(yīng)用系統(tǒng)運(yùn)行和性能產(chǎn)生影響。而且,鏡像不需要額外的計(jì)算和校驗(yàn),故障修復(fù)非???,直接復(fù)制即可。鏡像技術(shù)可以從多個(gè)副本進(jìn)行并發(fā)讀取數(shù)據(jù),提供更高的讀 I/O 性能,但不能并行寫數(shù)據(jù),寫多個(gè)副本通常會(huì)導(dǎo)致一定的 I/O 性能下降。 鏡像技術(shù)提供了非常高的數(shù)據(jù)安全性,其代價(jià)也是非常昂貴的,需要至少雙倍的存儲(chǔ)空間。高成本限制了鏡像的廣泛應(yīng)用,主要應(yīng)用于至關(guān)重要的數(shù)據(jù)保護(hù),這種場(chǎng)合下的數(shù)據(jù)丟失可能會(huì)造成非常巨大的損失。

數(shù)據(jù)條帶技術(shù)

? 數(shù)據(jù)條帶化技術(shù)是一種自動(dòng)將 I/O操作負(fù)載均衡到多個(gè)物理磁盤上的技術(shù)。更具體地說就是,將一塊連續(xù)的數(shù)據(jù)分成很多小部分并把它們分別存儲(chǔ)到不同磁盤上。這就能使多個(gè)進(jìn)程可以并發(fā)訪問數(shù)據(jù)的多個(gè)不同部分,從而獲得大程度上的 I/O 并行能力,極大地提升性能。

數(shù)據(jù)校驗(yàn)技術(shù)

? 數(shù)據(jù)校驗(yàn)技術(shù)是指, RAID 要在寫入數(shù)據(jù)的同時(shí)進(jìn)行校驗(yàn)計(jì)算,并將得到的校驗(yàn)數(shù)據(jù)存儲(chǔ)在 RAID 成員 磁盤中。校驗(yàn)數(shù)據(jù)可以集中保存在某個(gè)磁盤或分散存儲(chǔ)在多個(gè)不同磁盤中。當(dāng)其中一部分?jǐn)?shù)據(jù)出錯(cuò)時(shí), 就可以對(duì)剩余數(shù)據(jù)和校驗(yàn)數(shù)據(jù)進(jìn)行反校驗(yàn)計(jì)算重建丟失的數(shù)據(jù)。
數(shù)據(jù)校驗(yàn)技術(shù)相對(duì)于鏡像技術(shù)的優(yōu)勢(shì)在于節(jié)省大量開銷,但由于每次數(shù)據(jù)讀寫都要進(jìn)行大量的校驗(yàn)運(yùn)算,對(duì)計(jì)算機(jī)的運(yùn)算速度要求很高,且必須使用硬件 RAID 控制器。在數(shù)據(jù)重建恢復(fù)方面,檢驗(yàn)技術(shù)比鏡像技術(shù)復(fù)雜得多且慢得多。

二、雙主雙從集群搭建【云服務(wù)器實(shí)戰(zhàn)】

本次基于兩臺(tái)云服務(wù)器搭建RocketMQ集群,Broker采取雙主雙從,同步雙寫方式。先看看總體架構(gòu):
在這里插入圖片描述
RocketMQ集群工作流程

  1. 啟動(dòng)NameServer。NameServer啟動(dòng)后監(jiān)聽端口,等待Broker、Producer、Consumer連接,相當(dāng)于一個(gè)路由控制中心。
  2. 啟動(dòng) Broker。與所有 NameServer 保持長(zhǎng)連接,定時(shí)發(fā)送心跳包。心跳包中包含當(dāng)前 Broker 信息(IP+端口等)以及存儲(chǔ)所有 Topic 信息。注冊(cè)成功后,NameServer 集群中就有 Topic跟Broker 的映射關(guān)系。
  3. 首發(fā)消息前,先創(chuàng)建 Topic ,創(chuàng)建Topic時(shí)需要指定該 Topic 要存儲(chǔ)在哪些 Broker 上,也可以在發(fā)送消息時(shí)自動(dòng)創(chuàng)建Topic。
  4. 生產(chǎn)者發(fā)送消息。啟動(dòng)時(shí)先跟 NameServer 集群中的其中一臺(tái)建立長(zhǎng)連接,并從 NameServer 中獲取當(dāng)前發(fā)送的 Topic存在于哪些 Broker 上,輪詢從隊(duì)列列表中選擇一個(gè)隊(duì)列,然后與隊(duì)列所在的 Broker建立長(zhǎng)連接從而向 Broker發(fā)消息。
  5. 消費(fèi)者接受消息。跟其中一臺(tái)Nam
1. 環(huán)境準(zhǔn)備

首先我們需要準(zhǔn)備兩臺(tái)云服務(wù)器,小編使用的分別是兩核4G的騰訊云 和 1核兩G的阿里云 ,系統(tǒng)都是 CentOS7。

序號(hào)IP角色架構(gòu)模式服務(wù)器商
1124.222.223.222Nameserver、BrokerMaster1、Slave2騰訊云
247.96.232.192Nameserver、BrokerMaster2、Slave1阿里云

在這里插入圖片描述
服務(wù)器需要具備java環(huán)境、RocketMQ包,以及足夠的空閑內(nèi)存。關(guān)于java、RocketMQ的下載不是本文的重點(diǎn)就不再一一演示了~
在這里插入圖片描述

第一步、Host添加信息

1、需要在兩臺(tái)Host添加以下信息:

vim /etc/hosts

配置如下:

# nameserver
124.222.223.222 rocketmq-nameserver1
47.96.232.192 rocketmq-nameserver2
# broker
124.222.223.222 rocketmq-master1
124.222.223.222 rocketmq-slave2
47.96.232.192 rocketmq-master2
47.96.232.192 rocketmq-slave1

配置完成后,重啟網(wǎng)卡:

systemctl restart network

大家根據(jù)自己的服務(wù)器ip更換以上hosts文件內(nèi)容。

第二步、配置防火墻

節(jié)點(diǎn)之間需要通信,需要開放相關(guān)的端口,或者簡(jiǎn)單粗暴的方式——直接關(guān)閉防火墻。小編為了安全,只開放特定的端口號(hào),RocketMQ默認(rèn)使用3個(gè)端口:8976、1091111011、11009。

  • nameserver默認(rèn)使用 9876 端口;
  • Master 默認(rèn)使用 10911 端口;
  • Slave 默認(rèn)使用 11011 端口。
    在這里插入圖片描述
第三步、配置環(huán)境變量
vim /etc/profile

在profile文件的末尾加入以下命令:

# rocketMQ
ROCKETMQ_HOME=/soft/RocketMQ/rocketmq-all-4.9.0-bin-release
PATH=$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-1sCn9c9p-1671715596559)(RocketMQ-RocketMQ集群搭建.assets/image-20221218195618242.png)]

輸入:wq!保存并推出,并使得配置立刻生效:

source /etc/profile

這一步僅是方便在服務(wù)器任何路徑下都可以執(zhí)行rocketmq的bin目錄下的命令,可跳過。

第四步、創(chuàng)建消息存儲(chǔ)路徑

RocketMQ消息持久化的位置默認(rèn)是在/root/store/commitlog,為了方便操作我們自定義消息的存儲(chǔ)路徑~

# 在第一臺(tái)服務(wù)器執(zhí)行
mkdir /soft/RocketMQ/store-a
mkdir /soft/RocketMQ/store-a/commitlog
mkdir /soft/RocketMQ/store-a/consumequeue
mkdir /soft/RocketMQ/store-a/index

mkdir /soft/RocketMQ/store-b-s
mkdir /soft/RocketMQ/store-b-s/commitlog
mkdir /soft/RocketMQ/store-b-s/consumequeue
mkdir /soft/RocketMQ/store-b-s/index

# 在第二臺(tái)服務(wù)器執(zhí)行
mkdir /soft/RocketMQ/store-b
mkdir /soft/RocketMQ/store-b/commitlog
mkdir /soft/RocketMQ/store-b/consumequeue
mkdir /soft/RocketMQ/store-b/index

mkdir /soft/RocketMQ/store-a-s
mkdir /soft/RocketMQ/store-a-s/commitlog
mkdir /soft/RocketMQ/store-a-s/consumequeue
mkdir /soft/RocketMQ/store-a-s/index

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-HQKPOKnR-1671717131825)(RocketMQ-RocketMQ集群搭建.assets/image-20221219223509303.png)]

提示:以上操作兩臺(tái)服務(wù)器都執(zhí)行一遍~


2. Broker 配置文件

我們查看一下conf下的文件,我們本次搭建雙主雙從的方式故選擇2m-2s-sync
在這里插入圖片描述
進(jìn)入2m-2s-sync,在對(duì)應(yīng)的服務(wù)器上配置對(duì)應(yīng)的配置文件。如在124.222.223.222服務(wù)器上實(shí)現(xiàn)Master1、Slave2,修改broker-a.propertiesbroker-b-s.properties即可。
在這里插入圖片描述

第一步、配置 Master1

124.222.223.222服務(wù)器上修改broker-a.properties配置文件

vim /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-a.properties

修改配置如下:

#暴露外網(wǎng)的IP
brokerIP1=124.222.223.222
brokerIP2=124.222.223.222
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/soft/RocketMQ/store-a
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/soft/RocketMQ/store-a/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/soft/RocketMQ/store-a/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/soft/RocketMQ/store-a/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/soft/RocketMQ/store-a/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/soft/RocketMQ/store-a/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128

第二步、配置 Slave2

124.222.223.222服務(wù)器上修改broker-b-s.properties配置文件

vim /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-b-s.properties

修改配置如下:

#暴露外網(wǎng)的IP
brokerIP1=124.222.223.222
brokerIP2=124.222.223.222
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/soft/RocketMQ/store-b-s
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/soft/RocketMQ/store-b-s/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/soft/RocketMQ/store-b-s/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/soft/RocketMQ/store-b-s/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/soft/RocketMQ/store-b-s/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/soft/RocketMQ/store-b-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128

第三步、配置 Master2

47.96.232.192服務(wù)器上修改broker-b.properties配置文件

vim /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-b.properties

修改配置如下:

#暴露外網(wǎng)的IP
brokerIP1=47.96.232.192
brokerIP2=47.96.232.192
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/soft/RocketMQ/store-b
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/soft/RocketMQ/store-b/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/soft/RocketMQ/store-b/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/soft/RocketMQ/store-b/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/soft/RocketMQ/store-b/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/soft/RocketMQ/store-b/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128

第四步、配置 Slave1

47.96.232.192服務(wù)器上修改broker-a-s.properties配置文件

vim /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-a-s.properties

修改配置如下:

#暴露外網(wǎng)的IP
brokerIP1=47.96.232.192
brokerIP2=47.96.232.192
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn),默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/soft/RocketMQ/store-a-s
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/soft/RocketMQ/store-a-s/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/soft/RocketMQ/store-a-s/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/soft/RocketMQ/store-a-s/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/soft/RocketMQ/store-a-s/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/soft/RocketMQ/store-a-s/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128

3. 服務(wù)啟動(dòng) 第一步、啟動(dòng)NameServer集群

分別在 124.222.223.222、47.96.232.192服務(wù)器上啟動(dòng)NameServer

創(chuàng)建用來(lái)存放nameserver日志的文件

[root@hgwtencent /]# cd /soft/RocketMQ/
[root@hgwtencent RocketMQ]# mkdir -p store/log
[root@hgwtencent RocketMQ]# touch store/log/namesrv.log
[root@hgwtencent RocketMQ]# touch store/log/broker1.log
[root@hgwtencent RocketMQ]# touch store/log/broker2.log

啟動(dòng) NameServer~

[root@hgwtencent RocketMQ]# cd /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/bin
[root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup sh mqnamesrv >../../store/log/namesrv.log 2>&1 &
第二步、啟動(dòng)Broker集群

1、在124.222.223.222上啟動(dòng)master1和slave2

[root@hgwtencent bin]# cd /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/bin/
[root@hgwtencent bin]# nohup sh mqbroker -c /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-a.properties >../../store/log/broker1.log 2>&1 &
[root@hgwtencent bin]# nohup sh mqbroker -c /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-b-s.properties  >../../store/log/broker2.log 2>&1 &

2、在47.96.232.192 上啟動(dòng)master2和slave1

[root@hgwalibabacloud 2m-2s-sync]# cd /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/bin/
[root@hgwalibabacloud bin]# nohup sh mqbroker -c /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-b.properties  >../../store/log/broker1.log 2>&1 &
[root@hgwalibabacloud bin]# nohup sh mqbroker -c /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf/2m-2s-sync/broker-a-s.properties  >../../store/log/broker2.log 2>&1 &
第三步、驗(yàn)收

啟動(dòng)后通過JPS查看啟動(dòng)進(jìn)程
在這里插入圖片描述
查看日志

# 查看nameServer日志
tail -500f ~/logs/rocketmqlogs/namesrv.log
# 查看broker日志
tail -500f ~/logs/rocketmqlogs/broker.log

在這里插入圖片描述
關(guān)閉命令

mqshutdown broker
mqshutdown namesrv

4. 集群監(jiān)控平臺(tái)搭建

這里需要將兩臺(tái)服務(wù)器的11009端口開放,rocketmq-Dashboard管理頁(yè)面默認(rèn)端口為8080,小偉這因?yàn)?080被占用故調(diào)整為7777

第一步、下載并解壓

rocketmq-console已經(jīng)不在原先的倉(cāng)庫(kù)了,已經(jīng)被遷移到RocketMQ Dashboard。進(jìn)入到這個(gè)dashboard倉(cāng)庫(kù):https://github.com/apache/rocketmq-dashboard。下載zip包并解壓。
在這里插入圖片描述

第二步、修改配置文件

修改rocketmq.config.namesrvAddr=后面為你的NameServer集群地址

在這里插入圖片描述

第三步、編譯打包并部署

進(jìn)入/rocketmq-dashboard-master目錄

cd /Users/gwh/Documents/Software/tools/rocketmq/rocketmq-dashboard-master  

執(zhí)行編輯打包命令:mvn clean package -Dmaven.test.skip=true

mvn clean package -Dmaven.test.skip=true

等待命令執(zhí)行完成之后在/rocketmq-dashboard-master/target目錄下就可以看到打好的jar包啦!上傳到服務(wù)器run起來(lái)~
在這里插入圖片描述

nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &>store/log.log &

在這里插入圖片描述
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


當(dāng)前文章:RocketMQ-雙主雙從集群+DashBorad搭建(云服務(wù)器)-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://weahome.cn/article/csjjgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部