一、Rocket 部署
1.下載RocketMq
https://mirror.bit.edu.cn/apache/rocketmq/4.7.0/
- 上傳到linux服務
2.安裝RocketMq
unzip rocket rocketmq-all-4.7.0-bin-release.zip
創建rocketmq文件夾:mkdir /usr/local/rocketmq
移動到 usr/local/rocketmq
3.啓動 NamesServer
#啓動
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv &
#查看啓動日誌
tail -f ~/logs/rocketmqlogs/namesrv.log
4.啓動Broker
# 1.啓動Broker
cd /usr/local/rocketmq/bin
nohup sh mqbroker -n localhost:9876 &
#2.查看日誌
tail -f ~/logs/rocketmqlogs/broker.log
問題描述:
RocketMQ 默認的虛擬機內存較大,啓動Broker如果因爲內存不足失敗,修改JVM內存大小
默認8G 太大了!!
#編輯runbroker.sh 和 runserver.sh 修改默認JVM大小
vi runbroker.sh
vi runserver.sh
重新啓動broker 啓動命令在上面!
jps 命令查看進程
5.關閉RocketMQ
sh mqshutdown namesrv
sh mqshutdown broker
6.測試RocketMQ
發送消息
1.設置環境變量
export NAMESRV_ADDR=localhost:9876
2.使用安裝包的Demo發送消息
cd /usr/local/rocketmq/bin
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息
1.設置環境變量
export NAMESRV_ADDR=localhost:9876
2.接收消息
cd /usr/local/rocketmq/bin
sh tools.sh org.apache.rocketmq.example.quckstart.Consumer
效果圖:
二、RocketMQ集羣部署(2m-2s-asyn)
一、集羣部署準備
打算部署雙主雙從同步策略,主從複製,讀寫分離
服務器2臺
192.168.3.211 master1(主1)、slave2(從2)
192.168.3.212 master2(主2)、slave1(從1)
按照上面RocketMq的配置教程,分別在2臺主機安裝上RocketMq
部署的時候注意主從交叉部署,防止某臺主機掛掉,出主從機一起掛掉的情況。
二、192.168.3.211配置:
1.修改hosts配置
vi /etc/hosts
配置如下:
# nameserver
192.168.3.211 rocketmq-nameserver1
192.168.3.212 rocketmq-nameserver2
#broker
192.168.3.211 rocketmq-master1
192.168.3.211 rocketmq-slave2
192.168.3.212 rocketmq-master2
192.168.3.212 rocketmq-slave1
- 創建存儲目錄
cd /usr/local/rocketmq
mkdir broker-a
cd broker-a
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
cd /usr/local/rocketmq
mkdir broker-b-s
cd broker-b-s
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
3.進入配置目錄
cd /usr/local/rocketmq/conf/2m-2s-sync
4.修改主1配置文件
vi broker-a.properties
配置如下:
#所屬集羣
brokerClusterName=rocketmq-cluster
brokerIP1=192.168.3.211
brokerIP2=192.168.3.211
#broker名字
brokerName=broker-a
#0表示 Master,>0表示 Slave
brokerId=0
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#nameServer地址
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在發送消息時,自動創建服務器不存在的topic,默認創建隊列數
defaultTopicQueueNums=4
#是否允許Broker自動創建Topic,建議線下開啓,線上關閉
autoCreateTopicEnable=true
#是否允許Broker自動創建訂閱組
autoCreateSubscriptionGroup=true
#Broker對外服務的監聽端口
listenPort=10911
#刪除文件時間點,默認凌晨4點
deleteWhen=04
#文件保留時間,默認48小時
fileReservedTime=120
#commitLog每個文件的大小,默認1G
mapedFileSizeCommitLog=1073741824
#ConsueQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
#監測物理文件磁盤空間
diskMaxUserdSpaceRatio=88
#存儲路徑
storePathRootDir=/usr/local/rocketmq/broker-a/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/broker-a/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/broker-a/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/broker-a/store/index
#checkpoint 文件存儲路徑(不要手動創建!)
storeCheckpoint=/usr/local/rocketmq/broker-a/store/checkpoint
#abort 文件存儲路徑(不要手動創建!)
abortFile=/usr/local/rocketmq/broker-a/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
5.修改從2配置文件
vi broker-b-s.properties
配置如下:
#所屬集羣名字
brokerClusterName=rocketmq-cluster
brokerIP1=192.168.3.211
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/broker-b-s/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/broker-b-s/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/broker-b-s/store/index
#checkpoint 文件存儲路徑(不要手動創建!)
storeCheckpoint=/usr/local/rocketmq/broker-b-s/store/checkpoint
#abort 文件存儲路徑(不要手動創建!)
abortFile=/usr/local/rocketmq/broker-b-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
三、192.168.3.212配置:
1.修改hosts配置
vi /etc/hosts
配置如下:
# nameserver
192.168.3.211 rocketmq-nameserver1
192.168.3.212 rocketmq-nameserver2
#broker
192.168.3.211 rocketmq-master1
192.168.3.211 rocketmq-slave2
192.168.3.212 rocketmq-master2
192.168.3.212 rocketmq-slave1
2.創建存儲目錄
cd /usr/local/rocketmq
mkdir broker-b
cd broker-b
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
cd /usr/local/rocketmq
mkdir broker-a-s
cd broker-a-s
mkdir store
cd store
mkdir commitlog
mkdir consumequeue
mkdir index
3.進入配置目錄
cd /usr/local/rocketmq/conf/2m-2s-sync
4.修改主2配置文件
vi broker-b.properties
配置如下:
#所屬集羣名字
brokerClusterName=rocketmq-cluster
brokerIP1=192.168.3.212
brokerIP2=192.168.3.212
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=SYNC_FLUSH
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2: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=/usr/local/rocketmq/broker-b/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/broker-b/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/broker-b/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/broker-b/store/index
#checkpoint 文件存儲路徑(不要手動創建!)
storeCheckpoint=/usr/local/rocketmq/broker-b/store/checkpoint
#abort 文件存儲路徑(不要手動創建!)
abortFile=/usr/local/rocketmq/broker-b/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
5.修改從1配置文件
vi broker-a-s.properties
配置如下:
#所屬集羣名字
brokerClusterName=rocketmq-cluster
brokerIP1=192.168.3.212
#broker名字,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分號分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#Broker 的角色
#- ASYNC_MASTER 異步複製Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#在發送消息時,自動創建服務器不存在的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=/usr/local/rocketmq/broker-a-s/store
#commitLog 存儲路徑
storePathCommitLog=/usr/local/rocketmq/broker-a-s/store/commitlog
#消費隊列存儲路徑存儲路徑
storePathConsumeQueue=/usr/local/rocketmq/broker-a-s/store/consumequeue
#消息索引存儲路徑
storePathIndex=/usr/local/rocketmq/broker-a-s/store/index
#checkpoint 文件存儲路徑(不要手動創建!)
storeCheckpoint=/usr/local/rocketmq/broker-a-s/store/checkpoint
#abort 文件存儲路徑(不要手動創建!)
abortFile=/usr/local/rocketmq/broker-a-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#checkTransactionMessageEnable=false
#發消息線程池數量
#sendMessageThreadPoolNums=128
#拉消息線程池數量
#pullMessageThreadPoolNums=128
四、集羣啓動
1.啓動NameServer集羣
分別在192.168.3.211和192.168.3.212啓動NameServer
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv >namesrv.log 2>&1 &
jps檢查
- 啓動Broker集羣
在192.168.3.211啓動master1
master1:
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties >broker-a.log 2>&1 &
在192.168.3.212啓動master2
Master2:
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties >broker-b.log 2>&1 &
在192.168.3.211啓動slave2
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties >broker-b-s.log 2>&1 &
在192.168.3.212啓動slave1
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties >broker-a-s.log 2>&1 &
三、RocketMQ-Console部署
RocketMQ可視化管理控制檯
Rocketmq-console 屬於 rocketmq-externals的子項目
Springboot開發 -jar方式啓動即可
1.Git方式下載
原始倉庫:
https://github.com/apache/rocketmq-externals.git
國內倉庫
https://gitee.com/mirrors/RocketMQ-Externals.git
2.修改配置
3.maven打包
mvn clean package -Dmaven.test.skip=true
服務啓動
- 上傳至192.168.3.211服務上
2.啓動服務
nohup java -jar rocketmq-console-ng-1.0.1.jar >rocket-console.log 2>&1 &
3.訪問roeket-console