RocketMQ--環境搭建(單機&docker&叢集)
阿新 • • 發佈:2021-08-20
一、單機安裝
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、檢視
------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦朧的夜 留筆~~