安裝
# 解壓到 /usr/local/ 下
unzip rocketmq-all-版本號(hào)-bin-release.zip -d /usr/local/
# 進(jìn)入 /usr/local/
cd /usr/local/
# 重命名文件夾
mv rocketmq-all-版本號(hào)-bin-release/ rocketmq/
環(huán)境配置
Hosts 文件(測(cè)試環(huán)境)
vim /etc/hosts
# nameserver
192.168.199.111 rocketmq-nameserver1
192.168.199.112 rocketmq-nameserver2
192.168.199.113 rocketmq-nameserver3
192.168.199.114 rocketmq-nameserver4
# broker
192.168.199.111 rocketmq-master1
192.168.199.112 rocketmq-slave1
192.168.199.113 rocketmq-master2
192.168.199.114 rocketmq-slave2
# 重啟網(wǎng)絡(luò)服務(wù)
netplan apply
防火墻
# 禁用防火墻
ufw disable
# 設(shè)置防火墻
ufw default deny
# ssh
ufw allow proto tcp from 192.168.199.0/24 to any port 22
# nameserver
ufw allow proto tcp from 192.168.199.0/24 to any port 9876
# master
ufw allow proto tcp from 192.168.199.0/24 to any port 10911
# slave
ufw allow proto tcp from 192.168.199.0/24 to any port 11011
# 重載配置
ufw reload
# 啟用防火墻
ufw enable
# 啟用防火墻服務(wù)
systemctl start ufw
systemctl enable ufw
環(huán)境變量
vim /etc/profile
# 添加以下配置
export ROCKETMQ_HOME="/usr/local/rocketmq"
export PATH="${PATH}:${ROCKETMQ_HOME}/bin"
source /etc/profile
RocketMQ配置
創(chuàng)建消息存儲(chǔ)路徑
# 進(jìn)入目錄
cd /usr/local/rocketmq/
# 創(chuàng)建
mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
JVM內(nèi)存大刑垩(測(cè)試環(huán)境,因此配置的小一點(diǎn))
# 進(jìn)入 RocketMQ 的 bin 目錄
cd /usr/local/rocketmq/bin/
# 修改以下兩個(gè)文件
vim runbroker.sh
vim runserver.sh
runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
注釋版本檢測(cè)判斷(針對(duì) Java 8 版本)
cd /usr/local/rocketmq/bin/
vim runserver.sh
# 按照以下內(nèi)容,對(duì)該方法進(jìn)行注釋
choose_gc_options()
{
JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
# if [[ "$JAVA_MAJOR_VERSION" -lt "9" ]] ; then
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails"
JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
# else
# JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
# JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M"
# fi
}
保存退出即可
broker配置文件
# 進(jìn)入 RocketMQ 的 conf 目錄
cd /usr/local/rocketmq/conf/
# 進(jìn)入自己需要配置的集群模式的目錄
# 2m-2s-async 2個(gè)master,2個(gè)slave,異步刷盤異步復(fù)制
# 2m-noslave 2個(gè)master,沒有slave
# 2m-2s-sync 2個(gè)master矛辕,2個(gè)slave,異步刷盤同步復(fù)制(使用這個(gè))
cd 2m-2s-sync/
broker-a.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字付魔,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master聊品,>0 表示 Slave
brokerId=0
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在發(fā)送消息時(shí)几苍,自動(dòng)創(chuàng)建服務(wù)器不存在的topic翻屈,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟妻坝,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組伸眶,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn)刽宪,默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間厘贼,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
broker-a-s.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字圣拄,注意此處不同的配置文件填寫的不一樣
brokerName=broker-a
#0 表示 Master嘴秸,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在發(fā)送消息時(shí)庇谆,自動(dòng)創(chuàng)建服務(wù)器不存在的topic赁遗,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟族铆,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線下開啟哭尝,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn)哥攘,默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
broker-b.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字逝淹,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master耕姊,>0 表示 Slave
brokerId=0
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在發(fā)送消息時(shí)栅葡,自動(dòng)創(chuàng)建服務(wù)器不存在的topic茉兰,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟欣簇,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組规脸,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=10911
#刪除文件時(shí)間點(diǎn)熊咽,默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間莫鸭,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
broker-b-s.properties
#所屬集群名字
brokerClusterName=rocketmq-cluster
#broker名字横殴,注意此處不同的配置文件填寫的不一樣
brokerName=broker-b
#0 表示 Master被因,>0 表示 Slave
brokerId=1
#nameServer地址,分號(hào)分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在發(fā)送消息時(shí)衫仑,自動(dòng)創(chuàng)建服務(wù)器不存在的topic梨与,默認(rèn)創(chuàng)建的隊(duì)列數(shù)
defaultTopicQueueNums=4
#是否允許 Broker 自動(dòng)創(chuàng)建Topic,建議線下開啟文狱,線上關(guān)閉
autoCreateTopicEnable=true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組粥鞋,建議線下開啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
#Broker 對(duì)外服務(wù)的監(jiān)聽端口
listenPort=11011
#刪除文件時(shí)間點(diǎn)如贷,默認(rèn)凌晨 4點(diǎn)
deleteWhen=04
#文件保留時(shí)間陷虎,默認(rèn) 48 小時(shí)
fileReservedTime=120
#commitLog每個(gè)文件的大小默認(rèn)1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每個(gè)文件默認(rèn)存30W條,根據(jù)業(yè)務(wù)情況調(diào)整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#檢測(cè)物理文件磁盤空間
diskMaxUsedSpaceRatio=88
#存儲(chǔ)路徑
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存儲(chǔ)路徑
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消費(fèi)隊(duì)列存儲(chǔ)路徑存儲(chǔ)路徑
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存儲(chǔ)路徑
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存儲(chǔ)路徑
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存儲(chǔ)路徑
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 異步復(fù)制Master
#- SYNC_MASTER 同步雙寫Master
#- SLAVE
brokerRole=SLAVE
#刷盤方式
#- ASYNC_FLUSH 異步刷盤
#- SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#發(fā)消息線程池?cái)?shù)量
#sendMessageThreadPoolNums=128
#拉消息線程池?cái)?shù)量
#pullMessageThreadPoolNums=128
運(yùn)行
啟動(dòng) NameServer
cd /usr/local/rocketmq/bin
# 運(yùn)行
nohup sh mqnamesrv >/dev/null 2>&1 &
# 查看是否啟動(dòng)成功
jps
啟動(dòng) Broker
master-one
cd /usr/local/rocketmq/bin
# 運(yùn)行
# -c 指定配置文件
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a.properties >/dev/null 2>&1 &
slave-one
cd /usr/local/rocketmq/bin
# 運(yùn)行
# -c 指定配置文件
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-a-s.properties >/dev/null 2>&1 &
master-two
cd /usr/local/rocketmq/bin
# 運(yùn)行
# -c 指定配置文件
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b.properties >/dev/null 2>&1 &
slave-two
cd /usr/local/rocketmq/bin
# 運(yùn)行
# -c 指定配置文件
nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-sync/broker-b-s.properties >/dev/null 2>&1 &
查看日志
# nameserver
tail -500f ~/logs/rocketmqlogs/namesrv.log
# broker
tail -500f ~/logs/rocketmqlogs/broker.log
關(guān)閉
cd /usr/local/rocketmq/bin
# 先關(guān)閉 broker 杠袱,再關(guān)閉 nameserver
sh mqshutdown broker
sh mqshutdown namesrv
監(jiān)控控制臺(tái)
克隆項(xiàng)目
cd ~
# 克隆 https://github.com/apache/rocketmq-externals 項(xiàng)目
git clone https://github.com/apache/rocketmq-externals.git
修改 nameserver 的地址
# 進(jìn)入 RocketMQ 的監(jiān)控控制臺(tái)項(xiàng)目的目錄
cd ~/rocketmq-externals/rocketmq-console/
# 修改配置文件
vim src/main/resources/application.properties
# 修改為 namesever 的集群地址尚猿,然后保存退出
rocketmq.config.namesrvAddr=192.168.199.111:9876;192.168.199.112:9876;192.168.199.113:9876;192.168.199.114:9876
使用 mvn 進(jìn)行打包
cd ~/rocketmq-externals/rocketmq-console/
mvn clear package -Dmaven.test.skip=true
運(yùn)行 jar 包
cd target/
java -jar rocketmq-console-ng-版本號(hào).jar
訪問頁面
http://localhost:8080/