RocketMq單機和集羣搭建教程

 

 

 

1. rocketMQ單機版安裝

​ RocketMQ運行版本下載地址: https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip

​ RocketMQ源碼版本下載地址: https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.7.1/rocketmq-all-4.7.1-source-release.zipjava

        
單機版rocketMQ安裝linux

前提:確保linux已安裝jdk,由於rocketMQ依賴javaapache

①:安裝jdk(如已安裝請忽略)centos

# 1.解壓jdk
tar -zxvf jdk-8u171-linux-x64.tar.gz


# 2.打開環境變量
vi ~/.bash_profile

# 3.配置環境變量
export JAVA_HOME=/app/jdk1.8/
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export PATH

編輯完成後,執行 source ~/.bash_profile讓環境變量生效。安全

# 3.生效環境變量
source ~/.bash_profile

輸入java -version能查看到如下內容代表JDK安裝成功了。bash

[oper@worker1 ~]$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

        

②:安裝RocketMQ服務器

rocketrMQ經過ftp上傳到linux自定義目錄後,須要把rocketmq的bin目錄也配置到環境變量中app

# 1.打開環境變量
vi ~/.bash_profile

# 2.新增RocketMQ後的環境變量
export JAVA_HOME=/app/jdk1.8/
export ROCKETMQ_HOME=/app/rocketmq/rocketmq-all-4.7.1-bin-release //新增RocketMQ
PATH=$ROCKETMQ_HOME/bin:$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin  //配置進去
export PATH

一樣不要忘了生效環境變量異步

# 3.生效環境變量
source ~/.bash_profile

注意:這個ROCKETMQ_HOME的環境變量是必需要單獨配置的,若是不配置的話,啓動NameSever和Broker都會報錯。jvm

這個環境變量的做用是用來加載 $ROCKETMQ_HOME/conf 下的除broker.conf之外的幾個配置文件。因此實際狀況中,能夠不按這個配置,可是必定要能找到配置文件。

        
③:啓動NameServer

        要啓動RocketMQ服務,須要先啓動NameServer。啓動NameServer很是簡單, 在$ROCKETMQ_HOME/bin目錄下有個mqnamesrv。直接執行這個腳本就能夠啓動RocketMQ的NameServer服務。

注意:RocketMQ默認預設的JVM內存是4G,這是RocketMQ給咱們的最佳配置。可是一般咱們用虛擬機的話都是不夠4G內存的,因此須要調整下JVM內存大小。修改的方式是直接修改runserver.sh。 用vi runserver.sh編輯這個腳本,在腳本中找到這一行調整內存大小爲512M

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -
XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

修改後以下:
在這裏插入圖片描述
而後咱們用靜默啓動的方式啓動NameServer服務:

nohup bin/mqnamesrv &

啓動完成後,在nohup.out裏看到這一條關鍵日誌就是啓動成功了。而且使用jps指令能夠看到有一個NamesrvStartup進程。

Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and
will likely be removed in a future release.
The Name Server boot success. serializeType=JSON

        

④:啓動Broker

        啓動Broker的腳本是bin目錄下的runbroker.sh。Broker的默認預設內存是8G,啓動前,若是內存不夠,一樣須要調整下JVM內存。vi runbroker.sh,找到這一行,進行內存調整,與namserver相似

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

以下所示:
在這裏插入圖片描述

        而後須要找到$ROCKETMQ_HOME/conf/broker.conf, vi指令進行編輯,在最下面加入一個配置:表明自動建立topic

# 自動建立Topic設置
autoCreateTopicEnable=true

而後也以靜默啓動的方式啓動runbroker.sh

nohup ./bin/mqbroker &

啓動完成後,一樣是檢查nohup.out日誌,有這一條關鍵日誌就標識啓動成功了。 而且jps指令能夠看到一個BrokerStartup進程。

The broker[worker1, 192.168.232.128:10911] boot success. serializeType=JSON

注意:在觀察runserver.sh和runbroker.sh時,咱們還能夠查看到其餘的JVM執行參數,這些參數均可以進行定製。例如咱們觀察到一個比較有意思的地方,nameServer使用的是CMS垃圾回收器,而Broker使用的是G1垃圾回收器

        

⑤:驗證

        因爲rocketmq是java寫的,因此使用 jps 命令若是能夠查看到有nameserver、broker進程就說明啓動成功
在這裏插入圖片描述

        另外,在RocketMQ的安裝包中,提供了一個tools.sh工具能夠用來在命令行快速驗證RocketMQ服務。

首先須要配置一個環境變量NAMESRV_ADDR指向咱們啓動的NameServer服務。

export NAMESRV_ADDR='localhost:9876'

而後啓動消息生產者發送消息腳本:默認會發1000條消息

bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

看到下面的內容表明發送成功!
在這裏插入圖片描述
而後啓動消費者消費消息

bin/tools.sh  org.apache.rocketmq.example.quickstart.Consumer

看到以下打印,表明消費者消費成功
在這裏插入圖片描述
這個Consume指令並不會結束,他會繼續掛起,等待消費其餘的消息。咱們可使用CTRL+C中止該進程。

        

⑥:關閉RocketMQ服務

# 1.關閉NameServer
sh bin/mqshutdown namesrv

# 2.關閉Broker
sh bin/mqshutdown broker

至此,roicketMQ單機版安裝並測試完成

 

2. rocketMQ集羣方案

        克隆兩臺虛擬機,模擬集羣環境,點此查看克隆教程。一樣的,在兩臺虛擬機上都要安裝 jdk 和 rockeMQ,並配置環境變量,此過程跟單機環境同樣。爲了便於觀察,此次搭建一個2主2從異步刷盤的集羣,因此咱們會使用conf/2m-2s-async下的配置文件,實際項目中,爲了達到高可用,通常會使用dleger。這些原始的集羣配置文件在RocketMQ安裝時已默認生成,咱們只需修改配置文件。內部預備設計的集羣狀況以下:

機器名 nemaeServer節點部署 broker節點部署
centos7 - 主機 nameserver  
centos7 - chunjing nameserver broker-a, broker-b-s
centos7 - clone1 nameserver broker-b,broker-a-s

集羣方案解讀以下:

  1. centos7 - 主機 只配置nameserver,不配置節點
  2. 兩個主節點 broker-a,broker-b 分別落在centos7 - chunjing 和 centos7 - clone1 上
  3. 兩個主節點 broker-a-s,broker-b-s 分別落在centos7 - clone1和 centos7 - chunjing 上

配置集羣時可使用RocketMQ安裝時已默認生成的文件,進入rocketmq的config目錄下能夠看到rocketmq建議的各類配置方式:

  1. 2m-2s-async:2主2從異步刷盤(吞吐量較大,可是消息可能丟失),
  2. 2m-2s-sync:2主2從同步刷盤(吞吐量會降低,可是消息更安全),
  3. 2m-noslave:2主無從(單點故障),也能夠直接配置broker.conf,進行單點環境配置。
  4. dleger:是用來實現主從切換的。集羣中的節點會基於Raft協議隨機選舉出一個leader,其餘的就都是follower。一般正式環境都會採用這種方式來搭建集羣。

conf目錄結構以下:
在這裏插入圖片描述
當前咱們選擇的方案爲2主2從異步刷盤: 2m-2s-async,其目錄結構以下:
在這裏插入圖片描述

 

3. rocketMQ集羣搭建

集羣方案設計完畢後,接下來進行具體的搭建步驟:

①:安裝 jdk ,如上,省略

②:安裝RocketMQ ,如上,省略

③:在 centos7 - chunjing 機器上,配置第一組 broker-a主節點

編輯 2m-2s-async/broker-a.properties 文件

broker - a 主節點配置以下:

#所屬集羣名字,名字同樣的節點就在同一個集羣內
brokerClusterName=rocketmq-cluster
#broker名字,名字同樣的節點就是一組主從節點。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=192.168.100.100:9876;192.168.100.103:9876;192.168.100.104:9876
#在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數
defaultTopicQueueNums=4
#是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每一個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每一個文件默認存30W條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/tuling/rocketMQ/store
#commitLog 存儲路徑
storePathCommitLog=/tuling/rocketMQ/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/tuling/rocketMQ/store/consumequeue
#消息索引存儲路徑
storePathIndex=/tuling/rocketMQ/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/tuling/rocketMQ/store/checkpoint
#abort 文件存儲路徑
abortFile=/tuling/rocketMQ/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#這一個參數是代表RocketMQ內部用來發送消息的線程池的線程數量是16個,
#其實這個參數能夠根據機器的CPU核心數進行適當調整
#例如若是你的機器核心數超過16個,就能夠把這個參數適當調大。
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

④:在 centos7 - clone1 機器上,配置第一組 broker-a-s 從節點

編輯 2m-2s-async/broker-a-s.properties 文件,只須要修改brokerId,brokerRole和listenPort 便可

broker - a - s 配置以下

#所屬集羣名字,名字同樣的節點就在同一個集羣內
brokerClusterName=rocketmq-cluster
#broker名字,名字同樣的節點就是一組主從節點。
brokerName=broker-a
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=192.168.100.100:9876;192.168.100.103:9876;192.168.100.104:9876
#在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數
defaultTopicQueueNums=4
#是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11011
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每一個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每一個文件默認存30W條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/tuling/rocketMQ/storeSlave
#commitLog 存儲路徑
storePathCommitLog=/tuling/rocketMQ/storeSlave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/tuling/rocketMQ/storeSlave/consumequeue
#消息索引存儲路徑
storePathIndex=/tuling/rocketMQ/storeSlave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/tuling/rocketMQ/storeSlave/checkpoint
#abort 文件存儲路徑
abortFile=/tuling/rocketMQ/storeSlave/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

⑤:在 centos7 - clone1 機器上,配置第一組 broker-b 主節點

編輯 2m-2s-async/broker-b.properties 文件

broker - b 配置以下

#所屬集羣名字,名字同樣的節點就在同一個集羣內
brokerClusterName=rocketmq-cluster
#broker名字,名字同樣的節點就是一組主從節點。
brokerName=broker-b
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=192.168.100.100:9876;192.168.100.103:9876;192.168.100.104:9876
#在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數
defaultTopicQueueNums=4
#是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每一個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每一個文件默認存30W條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/tuling/rocketMQ/store
#commitLog 存儲路徑
storePathCommitLog=/tuling/rocketMQ/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/tuling/rocketMQ/store/consumequeue
#消息索引存儲路徑
storePathIndex=/tuling/rocketMQ/store/index
#checkpoint 文件存儲路徑
storeCheckpoint=/tuling/rocketMQ/store/checkpoint
#abort 文件存儲路徑
abortFile=/tuling/rocketMQ/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

⑥:在 centos7 - chunjing 機器上,配置第一組 broker-b-s 主節點

編輯 2m-2s-async/broker-b-s.properties 文件

broker - b - s 配置以下

#所屬集羣名字,名字同樣的節點就在同一個集羣內
brokerClusterName=rocketmq-cluster
#broker名字,名字同樣的節點就是一組主從節點。
brokerName=broker-b
#brokerid,0就表示是Master,>0的都是表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=192.168.100.100:9876;192.168.100.103:9876;192.168.100.104:9876
#在發送消息時,自動建立服務器不存在的topic,默認建立的隊列數
defaultTopicQueueNums=4
#是否容許 Broker 自動建立Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否容許 Broker 自動建立訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=true
#Broker 對外服務的監聽端口
listenPort=11011
#刪除文件時間點,默認凌晨 4點
deleteWhen=04
#文件保留時間,默認 48 小時
fileReservedTime=120
#commitLog每一個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每一個文件默認存30W條,根據業務狀況調整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲路徑
storePathRootDir=/tuling/rocketMQ/storeSlave
#commitLog 存儲路徑
storePathCommitLog=/tuling/rocketMQ/storeSlave/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/tuling/rocketMQ/storeSlave/consumequeue
#消息索引存儲路徑
storePathIndex=/tuling/rocketMQ/storeSlave/index
#checkpoint 文件存儲路徑
storeCheckpoint=/tuling/rocketMQ/storeSlave/checkpoint
#abort 文件存儲路徑
abortFile=/tuling/rocketMQ/storeSlave/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128

須要注意的配置項

  1. 同一機器上兩個實例的store目錄不能相同,不然會報錯 Lock failed,MQ already started
  2. 同一機器上兩個實例的listenPort也不能相同。不然會報端口占用的錯,nameserver不須要進行配置,直接啓動就行。這也看出nameserver是無狀態的。

        

啓動RocketMQ

①:先啓動nameServer

如單機版配置同樣,修改三個節點上的bin/runserver.sh,調整裏面的jvm內存配置。找到下面這一行調整下內存

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

直接在三個節點上啓動nameServer。

nohup bin/mqnamesrv &

啓動成功標誌:進入bin同級目錄的 nohub.out 文件中看到以下圖,表示啓動成功!
在這裏插入圖片描述
或者使用 jps 查看有nameServer進程便可:
在這裏插入圖片描述

        
②:再啓動broker

        啓動broker是使用的mqbroker指令,只是注意啓動broker時須要經過-c 指定對應的配置文件。同時也要注意若是linux配置過小,不知足rocketmq的默認內存大小,須要手動進入 bin/runbroker.sh 中修改一下啓動參數,不然啓動會報錯,修改以下
在這裏插入圖片描述

# 在centos7-chunjing 機器上啓動broker-a的master節點和broker-b的slave節點
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a.properties &
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
# 在centos7-clone1 機器上啓動broker-b的master節點和broker-a的slave節點
nohup ./mqbroker -c ../conf/2m-2s-async/broker-b.properties &
nohup ./mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &

注意:啓動slave時,若是遇到報錯 Lock failed,MQ already started ,那是由於有多個實例共用了同一個storePath形成的,這時就須要調整store的路徑。

啓動成功標誌:進入bin/nobub.out文件中能夠看到下圖表示成功。
在這裏插入圖片描述
也可以使用jps查看進程確認是否成功!
在這裏插入圖片描述

命令行快速驗證

        指定NameServer地址,能夠配置一個環境變量NAMESRV_ADDR,這樣默認會讀取這個NameServer地址。能夠配到.bash_profile裏或者直接臨時指定。

# 添加環境變量
export NAMESRV_ADDR='worker1:9876;worker2:9876;worker3:9876'

# 生效環境變量
source ~/.bash_profile
# 發送消息:默認會發1000條消息
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 接收消息:
bin/tools.sh  org.apache.rocketmq.example.quickstart.Consumer

                
        

4. Dleger搭建rokcetMQ高可用集羣

        經過上面那種方式,咱們搭建了一個主從結構的RocketMQ集羣,可是咱們要注意,這種主從結構是隻作數據備份,沒有容災功能的。也就是說當一個master節點掛了後,slave節點是沒法切換成master節點繼續提供服務的。注意這個集羣至少要是3臺,容許少於一半的節點發生故障。而若是要進行高可用的容災備份,須要採用Dledger的方式來搭建高可用集羣。注意,這個Dledger須要在RocketMQ4.5之後的版本才支持,咱們使用的4.7.1版本已經默認集成了dledger。

        要搭建高可用的Broker集羣,咱們只須要配置conf/dleger下的配置文件就行。這種模式是基於Raft協議的,是一個相似於Zookeeper的paxos協議的選舉協議,也是會在集羣中隨機選舉出一個leader,其餘的就是follower。只是他選舉的過程跟paxos有點不一樣。Raft協議基於隨機休眠機制的,選舉過程會比paxos相對慢一點。

首先:咱們一樣是須要修改runserver.sh和runbroker.sh,對JVM內存進行定製。

而後:咱們須要修改conf/dleger下的配置文件。 跟dleger相關的幾個配置項以下:

配置項 含義 配置值
enableDLegerCommitLog 是否啓動 DLedger true
dLegerGroup DLedger Raft Group的名字,建議和 brokerName 保持一致 RaftNode00
dLegerPeers DLedger Group 內各節點的端口信息,同一個 Group 內的各個節點配置必需要保證一致 n0-127.0.0.1:40911;n1-127.0.0.1:40912;n2-127.0.0.1:40913
dLegerSelfId 節點 id, 必須屬於 dLegerPeers 中的一個;同 Group 內各個節點要惟一 n0
sendMessageThreadPoolNums 發送線程個數,建議配置成 Cpu 核數 16

conf/dleger目錄以下:
在這裏插入圖片描述

配置完後,一樣是使用 nohup bin/mqbroker -c $conf_name & 的方式指定實例文件來啓動。

注意:

  1. 在bin/dleger下有個fast-try.sh,這個腳本是在本地啓動三個RocketMQ實例,搭建一個高可用的集羣,讀取的就是conf/dleger下的broker-no.conf,broker-n1.conf和broker-n2.conf。
  2. 使用這個腳本一樣要注意定製下JVM內存,他給每一個實例默認定製的是1G內存,虛擬機確定是不夠的。
  3. 這種單機三實例的集羣搭建完成後,可使用 bin/mqadmin clusterList -n
    worker1.conf的方式查看集羣狀態。
  4. 單機狀態下通常一次主從切換須要大概10S的時間。

                
        

5. rockerMQ集羣控制檯展現

RocketMQ源代碼中並無提供控制檯,可是有一個Rocket的社區擴展項目中提供了一個控制檯,

下載下來後,進入其中的rocket-console目錄,使用maven進行編譯

mvn clean package -Dmaven.test.skip=true

編譯完成後,獲取target下的jar包,就能夠直接執行。可是這個時候要注意,在這個項目的application.properties中須要指定nameserver的地址。默認這個屬性是空的。那咱們能夠在jar包的當前目錄下增長一個application.properties文件,覆蓋jar包中默認的一個屬性:

rocketmq.config.namesrvAddr=192.168.100.100:9876;192.168.100.103:9876;192.168.100.104:9876

而後執行:

java -jar rocketmq-console-ng-1.0.1.jar

啓動完成後,能夠訪問 http://ip:8080看到管理頁面 以下所示:

在這裏插入圖片描述

相關文章
相關標籤/搜索