一、官網地址: http://rocketmq.apache.org/docs/
下載rocketmq rocketmq-all-4.4.0-bin-release.zip
二、安裝部署
主機 角色 模式
172.16.1.1 nameserver,broker broker主、broker從
172.16.1.2 nameserver,broker broker主、broker從
生產需要擴容防止單點故障
1.部署配置
RocketMQ的消息是存儲到磁盤上的,這樣既能保證斷電後恢復,又可以讓存儲的消息量超出內存的限制。
RocketMQ爲了提高性能,會儘可能地保證磁盤的順序寫。消息在通過Producer寫入RocketMQ的時候,有兩種
寫磁盤方式
異步刷盤方式:在返回寫成功狀態時,消息可能只是被寫入了內存的PAGECACHE,寫操作的返回快,
吞吐量大;當內存裏的消息量積累到一定程度時,統一觸發寫磁盤操作,快速寫入
同步刷盤方式:在返回寫成功狀態時,消息已經被寫入磁盤。具體流程是,消息寫入內存的PAGECACHE後,立刻
通知刷盤線程刷盤,然後等待刷盤完成,刷盤線程執行完成後喚醒等待的線程,返回消息寫成功的狀態。
同步複製,異步複製
如果一個broker組有Master和Slave,消息需要從Master複製到Slave上,有同步和異步兩種複製方式。
同步複製: Master和Slave均寫成功後才反饋給客戶端寫成功狀態
異步複製: 只要Master寫成功即可反饋給客戶端寫成功狀態
2.安裝步驟
172.16.1.1上broker master操作
mkdir /data/rocketMQ-2m2s/store
mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}
unzip rocketmq-all-4.4.0-bin-release.zip
mv rocketmq-all-4.4.0-bin-release /usr/local/rocketmq
vim /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties # 修改參數(登錄主機查看參數)
# 集羣名字
brokerClusterName=KaishuCluster
brokerName=broker-a (跟從這裏一樣,跟其他主這裏不能一樣)
# 0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分號分割
namesrvAddr=172.17.5.42:9876;172.17.5.45:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數
defaultTopicQueueNums=300
#是否允許 Broker 自動創建Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=false
#是否允許 Broker 自動創建訂閱組,建議線下開啓,線上關閉
autoCreateSubscriptionGroup=false
#Broker 對外服務的監聽端口
listenPort=10911
haListenPort=10912
# 刪除過期文件時間點,默認凌晨4點
deleteWhen=04
fileReservedTime=48
#commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#檢測物理文件磁盤空間,commitlog目錄所在分區的最大使用比例,如果commitlog目錄所在的分區使用比例大於該值,則觸發過期文件刪除
diskMaxUsedSpaceRatio=88
#broker存儲目錄
storePathRootDir=/data/rocketMQ-2m2s/store
#commitLog 存儲路徑
storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#發消息線程池數量
sendMessageThreadPoolNums=128
#拉消息線程池數量
pullMessageThreadPoolNums=128
#打開鎖
useReentrantLockWhenPutMessage=true
waitTimeMillsInSendQueue=3000
vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver數據保存地址(登錄主機查看配置)
172.16.1.2上broker master操作
mkdir /data/rocketMQ-2m2s/store
mkdir /data/rocketMQ-2m2s/store/{commitlog,consumequeue,index}
unzip rocketmq-all-4.4.0-bin-release.zip
mv rocketmq-all-4.4.0-bin-release /usr/local/rocketmq
vim /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties # 修改參數(登錄主機查看參數)
vim /usr/local/rocketmq/conf/logback_namesrv.xml 修改nameserver數據保存地址(登錄主機查看配置)
172.16.1.1上broker slave操作
mkdir /data/rocketMQ-2m2s/store-s
mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}
vim /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties # 修改參數(登錄主機查看參數)
172.16.1.2上broker slave操作
mkdir /data/rocketMQ-2m2s/store-s
mkdir /data/rocketMQ-2m2s/store-s/{commitlog,consumequeue,index}
vim /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties # 修改參數(登錄主機查看參數)
3.啓動停止服務
啓動兩臺機器的nameserver服務
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
兩臺機器啓動broker 主從
172.16.1.1啓動主
nohup sh mqbroker -c ../conf/2m-2s-async/broker-a.properties &
172.16.1.2啓動主
nohup sh mqbroker -c ../conf/2m-2s-async/broker-b.properties &
172.16.1.1啓動從
nohup sh mqbroker -c ../conf/2m-2s-async/broker-b-s.properties &
172.16.1.2啓動從
nohup sh mqbroker -c ../conf/2m-2s-async/broker-a-s.properties &
三、rocketmq監控
下載https://github.com/apache/rocketmq-externals
解壓unzip rocketmq-externals-master
cd rocketmq-externals-master/rocketmq-console/src/main/resources
vim application.properties
rocketmq.config.nameservAddr=172.16.1.1:9876,172.16.1.2:9876 #修改
rocketmq.config.dataPath=/data/rocketMQ-2m2s # 修改
rocketmq.config.loginRequired=true # 設置登錄權限
vim users.properties # 設置登錄賬號
vim pom.xml # 根據安裝版本不同修改版本號
mvn clean package -Dmaven.test.skip=true
啓動:nohup java -jar rocketmq-console-ng-1.0.1.jar --server.port=8080 --rocketmq.config.namesrvAddr=172.16.1.1:9876 & # --rocketmq.config.namesrvAddr必須加上該參數,否則會報錯
四、命令使用
創建topic
sh mqadmin updateTopic -n 172.17.5.42:9876 -b 172.17.5.42:10911 -c 集羣名 -t app01
sh mqadmin topicList -n 172.17.5.42:9876 查看所有topic
sh mqadmin clusterList -n 172.17.5.45:9876 查看集羣消息