https://www.cnblogs.com/ityushuo/p/15305360.html
角色介绍
- Producer:消息的发送者; 举例:发信者
- Consumer:消息接收者;举例:收信者
- Broker:暂存和传输消息;举例:邮局
- NameServer:管理Broker;举例:各个邮局的管理机构
- Topic:区分消息的种类; 一个发送者可以发送消息给一个或者多个Topic;一个消息的接受者可以订阅一个或者多个Topic消息
- Message Queue:相当于Topic的分区; 用于并行发送和接收消息
准备
搭建出双主、双从、无单点故障的高可用 RocketMQ 集群
主机 A:10.202.12.113 修改 broker-a.properties broker-b-s.properties
主机 B:10.202.12.114 修改 broker-b.properties broker-a-s.properties
配置文件
进入主机 A 的目录 conf/2m-2s-sync
,修改文件 broker-a.properties 的内容如下:
brokerClusterName=rocketmq
brokerName=broker-a
brokerId=0
namesrvAddr=10.202.12.113:9876;10.202.12.114:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=false
autoCreateSubscriptionGroup=false
listenPort=10911
deleteWhen=01
fileReservedTime=72
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/apps/dat/rocketmq/broker-a-master/store
storePathCommitLog=/apps/dat/rocketmq/broker-a-master/store/commitlog
storePathConsumeQueue=/apps/dat/rocketmq/broker-a-master/store/consumequeue
storePathIndex=/apps/dat/rocketmq/broker-a-master/store/index
storeCheckpoint=/apps/dat/rocketmq/broker-a-master/store/checkpoint
abortFile=/apps/dat/rocketmq/broker-a-master/store/abort
maxMessageSize=65536
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
主从消息存储路径很关键(master和slave不要在统一目录下)
进入主机 B 的目录 conf/2m-2s-sync,
修改文件 broker-b.properties 的内容如下:
brokerClusterName=rocketmq
brokerName=broker-b
brokerId=0
namesrvAddr=10.202.12.113:9876;10.202.12.114:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=false
autoCreateSubscriptionGroup=false
listenPort=10911
deleteWhen=01
fileReservedTime=72
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/apps/dat/rocketmq/broker-b-master/store
storePathCommitLog=/apps/dat/rocketmq/broker-b-master/store/commitlog
storePathConsumeQueue=/apps/dat/rocketmq/broker-b-master/store/consumequeue
storePathIndex=/apps/dat/rocketmq/broker-b-master/store/index
storeCheckpoint=/apps/dat/rocketmq/broker-b-master/store/checkpoint
abortFile=/apps/dat/rocketmq/broker-b-master/store/abort
maxMessageSize=65536
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
截止目前为止,Master Broker 的配置文件都配置完毕
进入主机 A 的目录 conf/2m-2s-sync,
修改文件 broker-b-s.properties 的内容如下:
[apps@TLKYVM202012113 2m-2s-sync]$ cat broker-b-s.properties
brokerClusterName=rocketmq
brokerName=broker-b
brokerId=1
namesrvAddr=10.202.12.113:9876;10.202.12.114:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=false
autoCreateSubscriptionGroup=false
listenPort=10920
deleteWhen=01
fileReservedTime=72
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/apps/dat/rocketmq/broker-b-slave/store
storePathCommitLog=/apps/dat/rocketmq/broker-b-slave/store/commitlog
storePathConsumeQueue=/apps/dat/rocketmq/broker-b-slave/store/consumequeue
storePathIndex=/apps/dat/rocketmq/broker-b-slave/store/index
storeCheckpoint=/apps/dat/rocketmq/broker-b-slave/store/checkpoint
abortFile=/apps/dat/rocketmq/broker-b-slave/store/abort
maxMessageSize=65536
brokerRole=SLAVE
flushDiskType=SYNC_FLUSH
进入主机 B 的目录 conf/2m-2s-sync
,修改文件 broker-a-s.properties 的内容如下:
brokerClusterName=rocketmq
brokerName=broker-a
brokerId=1
namesrvAddr=10.202.12.113:9876;10.202.12.114:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=false
autoCreateSubscriptionGroup=false
listenPort=10920
deleteWhen=01
fileReservedTime=72
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=300000
diskMaxUsedSpaceRatio=88
storePathRootDir=/apps/dat/rocketmq/broker-a-slave/store
storePathCommitLog=/apps/dat/rocketmq/broker-a-slave/store/commitlog
storePathConsumeQueue=/apps/dat/rocketmq/broker-a-slave/store/consumequeue
storePathIndex=/apps/dat/rocketmq/broker-a-slave/store/index
storeCheckpoint=/apps/dat/rocketmq/broker-a-slave/store/checkpoint
abortFile=/apps/dat/rocketmq/broker-a-slave/store/abort
maxMessageSize=65536
brokerRole=SLAVE
修改启动脚本文件
1)runbroker.sh
vi /usr/local/rocketmq/bin/runbroker.sh
需要根据内存大小进行适当的JVM参数进行调整:
#===================================================
# 开发环境配置 JVM Configuration
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
2)runserver.sh
vim /usr/local/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
注意点
默认情况下,RocketMQ 的 nameserver 和 broker 文件启动项里配置的内存太大,极易出现 Cannot allocate memory 的情况。
此时,需要修改 bin/runserver.sh
和 bin/runbroker.sh
的文件内容,将最大堆、最小堆和年轻代的值调小,如下:
bin/runserver.sh
bin/runbroker.sh
服务启动
1)启动NameServe集群
分别在10.202.12.113和10.202.12.114启动NameServer
cd /usr/local/rocketmq/bin
nohup sh mqnamesrv 2>&1 &
2)启动broker集群
- 在10.202.12.113上启动master1和slave2
master1:
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/software/rocketmq/conf/2m-2s-sync/broker-a.properties &
slave2:
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/software/rocketmq/conf/2m-2s-sync/broker-b-s.properties &
- 在10.202.12.114上启动master2和slave1
master2
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/software/rocketmq/conf/2m-2s-sync/broker-b.properties &
slave1
cd /usr/local/rocketmq/bin
nohup sh mqbroker -c /usr/local/software/rocketmq/conf/2m-2s-sync/broker-a-s.properties &
查看进程状态
# 查看nameServer日志
tail -500f ~/logs/rocketmqlogs/namesrv.log
# 查看broker日志
tail -500f ~/logs/rocketmqlogs/broker.log
服务停止(依次执行以下两条命令即可)
sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK
使用mqadmin命令查看集群
#使用mqadmin 查看集群状态
[apps@TLKYVM202012113 bin]$ ./mqadmin clusterList -n 127.0.0.1:9876
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
rocketmq broker-a 0 10.202.12.113:10911 V4_9_8 0.00(0,0ms) 0.00(0,0ms) 0 478131.36 0.4500
rocketmq broker-a 1 10.202.12.114:10920 V4_9_8 0.00(0,0ms) 0.00(0,0ms) 0 478131.36 0.3200
rocketmq broker-b 0 10.202.12.114:10911 V4_9_8 0.00(0,0ms) 0.00(0,0ms) 0 478131.36 0.3200
rocketmq broker-b 1 10.202.12.113:10920 V4_9_8 0.00(0,0ms) 0.00(0,0ms) 0 478131.36 0.4500
启动成功后,执行 mqadmin 命令查看集群信息:
[apps@TLKYVM202012113 bin]$ ./mqadmin topicList -n 127.0.0.1:9876
test-rocketmq_REPLY_TOPIC
SCHEDULE_TOPIC_XXXX
RMQ_SYS_TRANS_HALF_TOPIC
rocketmq
broker-b
BenchmarkTest
OFFSET_MOVED_EVENT
rocketmq_REPLY_TOPIC
broker-a
SELF_TEST_TOPIC
test-rocketmq