启动RocketMQ中broker失败的原因

自己在linux环境中搭建的RocketMQ集群,在学习RocketMQ过程中,启动NamesrvStartup成功,启动第一个broker master成功,启动第二个broker slave则一直失败。

查找了很久终于找到原因,在此记录。

存在的问题:在配置双主双从集群时,配置文件中相关的存储路径需要区分,主节点、从节点的数据不能保存在同一个目录下

在此附上主从节点的配置文件:

主节点master

# 所属集群名字
brokerClusterName=rocketmq-cluster
# broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
# 0 表示 Master,>0 标识 Slave
brokerId=0
# nameServer地址,分号分隔
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
defaultWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存储30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destoryMapedFileIntervalForcibly=120000
# redeleteRangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/usr/local/rocketmq_store
# commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq_store/commitLog
# 消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq_store/consumequeue
# 消息索引存储路径
storePathIndex=/usr/local/rocketmq_store/index
# checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq_store/checkpoint
# abort 文件存储路径
abortFile=/usr/local/rocketmq_store/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步复制Master
# -SLAVE
brokerRole=SYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
# checkTransactionMessageEnable=false
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=128

从节点slave

# 所属集群名字
brokerClusterName=rocketmq-cluster
# broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
# 0 表示 Master,>0 标识 Slave
brokerId=1
# nameServer地址,分号分隔
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=11011
# 删除文件时间点,默认凌晨4点
defaultWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个文件默认存储30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destoryMapedFileIntervalForcibly=120000
# redeleteRangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
storePathRootDir=/usr/local/rocketmq_store_slave
# commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq_store_slave/commitLog
# 消费队列存储路径
storePathConsumeQueue=/usr/local/rocketmq_store_slave/consumequeue
# 消息索引存储路径
storePathIndex=/usr/local/rocketmq_store_slave/index
# checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq_store_slave/checkpoint
# abort 文件存储路径
abortFile=/usr/local/rocketmq_store_slave/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步复制Master
# -SLAVE
brokerRole=SLAVE
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# checkTransactionMessageEnable=false
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=128

注意:如果在本机搭建RocketMQ双主双从集群时,还需要注意一个问题,内存占用的问题

在rocketmq bin目录下runserver.sh、runbroker.sh,默认的JVM内存配置占用很大,要根据当前环境修改参数。

 

例如:本人笔记本的虚拟机内存较小,更改参数为128m

runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

runbroker.sh

JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m"

 

你可能感兴趣的:(rocketmq)