1. 程式人生 > 其它 >RocketMQ--環境搭建(單機&docker&叢集)

RocketMQ--環境搭建(單機&docker&叢集)

一、單機安裝

  1、安裝RocketMQ需要使用JDK,首先需要配置好JDK,安裝JDK

  2、下載並啟動RocketMQ

# 下載RocketMQ
wget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip
# 解壓縮
unzip rocketmq-all-4.9.0-bin-release.zip
# 切換到bin目錄
cd rocketmq-all-4.9.0-bin-release/bin/
# 後臺啟動namesrv
nohup ./mqnamesrv > /dev/null 2>&1
& # 後臺啟動broker nohup ./mqbroker -n localhost:9876 > /dev/null 2>&1 &

  如果出現如下問題:

      

  這是因為記憶體不足,導致java程式執行不起來,可以設定namesrv和broker的內佔用記憶體

   修改runserver.sh和runbroker.sh中關於記憶體的配置

      

  3、驗證訊息

  首先修改namesrv的地址

#編輯profile檔案 
vi /etc/profile 
#重新整理 
source /etc/profile 
#設定nameserver伺服器 
export NAMESRV_ADDR
=localhost:9876

  然後驗證訊息傳送和訊息消費

#測試訊息傳送命令 
sh tools.sh org.apache.rocketmq.example.quickstart.Producer 
#測試訊息接收命令 
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

二、Docker安裝

  1、安裝docker

  2、拉取映象

docker pull foxiswho/rocketmq:server-4.3.2 
docker pull foxiswho/rocketmq:broker-4.3.2

  3、建立namesrv容器

docker run -di -p 9877:9876 --name=rmqserver -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" foxiswho/rocketmq:server-4.3.2

  4、建立broker容器

docker run -di -p 10911:10911 -p 10909:10909 --name=rmqbroker -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:broker-4.3.2

  5、配置broker

# 配置broker容器的配置檔案
docker exec -it rmqbroker /bin/bash 
cd /etc/rocketmq/ 
vi broker.conf
#配置內容
brokerIP1=192.168.124.11
namesrvAddr=192.168.124.11:9876 
brokerName=broker-a

  6、重新啟動

docker start rmqserver rmqbroker

  7、停止和刪除容器

docker stop rmqbroker rmqserver 
docker rm rmqbroker rmqserver

三、叢集搭建

  rocketmq已經提供了叢集的樣例

  1、修改如下配置檔案:

${RocketMQ_HOME}/conf/2m-2s-sync/broker-a.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-a-s.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-b.properties
${RocketMQ_HOME}/conf/2m-2s-sync/broker-b-s.properties

  修改內容:

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
listenPort=40911
storePathRootDir=/Users/hadoop/store-a/
storePathCommitLog=/Users/hadoop/store-a/commitlog/
storePathConsumerQueue=/Users/hadoop/store-a/consumequeue/

  需要說明一下,如果是同一臺機子,監聽埠需要修改不一樣。

  2、啟動broker

bin/mqbroker -c conf/2m-2s-sync/broker-a.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-b.properties -n localhost:9876 &
bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties -n localhost:9876 &

  5、檢視

      

  6、對於broker的全量配置內容如下所示

#所屬叢集名字
brokerClusterName=tl-rocketmq-cluster
#broker名字,注意此處不同的配置檔案填寫的不一樣; 在broker-b.properties中此處需要修改為:brokerName=broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=node1:9876;node2: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=/apps/rocketmq-4.2.0/2m2s-data/store
#commitLog 儲存路徑
storePathCommitLog=/apps/rocketmq-4.2.0/2m2s-data/store/commitlog
#消費佇列儲存路徑儲存路徑
storePathConsumeQueue=/apps/rocketmq-4.2.0/2m2s-data/store/consumequeue
#訊息索引儲存路徑
storePathIndex=/apps/rocketmq-4.2.0/2m2s-data/store/index
#checkpoint 檔案儲存路徑
storeCheckpoint=/apps/rocketmq-4.2.0/2m2s-data/store/checkpoint
#abort 檔案儲存路徑
abortFile=/apps/rocketmq-4.2.0/2m2s-data/store/abort
#限制的訊息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
#Broker 的角色
#- ASYNC_MASTER 非同步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 非同步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

四、控制檯

  1、搭建

# 拉取映象
docker pull styletang/rocketmq-console-ng:1.0.0
# 建立並執行容器
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.124.11:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:1.0.0

  2、檢視

      

------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦朧的夜 留筆~~