RocketMQ 双master双slave 异步刷盘,Produce提交后,slave不能同步刷新mater的数据

1.问题:在Centos6.7配置RocketMQ,在product提交数据后,双master有数据,slave没有数据,这个是什么原因呢?本人已经重装也配置过所有的VM下4个服务器的配置,但是依然没找到问题所在,希望好心人提供解决方案,感激不尽!

2.提交数据,在rocketmq-console看到数据如下:
slave没有同步到master的48条数据--另一个master也是一样

这里我的ip地址如以下的hosts文件如下:
etc/hots文件配置
我配置文件如下:全部均放在每个server的/usr/local/rocketmq/conf/2m-2s-async/

  • broker-a-master.properties
listenPort=10911
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#启动MessageFilterServer进程
filterServerNums=1
brokerIP1=192.168.63.3
brokerName=brocker-a
#Broker所属集群
brokerClusterName=qipuTestCluster
#0:Master >0:Slave
brokerId=0
#Broker 的角色
#ASYNC_MASTER 主从异步复制
#SYNC_MASTER  主从同步双写
#SLAVE    Slave
brokerRole=ASYNC_FLUSH
#刷盘方式
#ASYNC_FLUSH:异步刷盘
#SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#线下开启,线上关闭
autoCreateTopicEnable=TRUE
#自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=TRUE
#是否拒绝事务消息接入
rejectTransactionMessage=FALSE
#是否从web服务器获取NameServer地址,针对大规模的Broker集群建议使用这种方式
fetchNamesrvAddrByAddressServer=FALSE
#日志根路径
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
#删除文件时间点,默认凌晨4点
deleteWhen=4
#文件保留时间,默认48小时
fileReservedTime=48
#是否开启消息索引功能
messageIndexEnable=TRUE
#是否提供安全的消息索引机制,索引保证不丢
messageIndexSafe=FALSE
#在 Slave 上直接设置 Master地址,默认从 Name Server 上自动获取,也可以手工强制配置
#haMasterAddress=
flushIntervalCommitLog=1000
#磁盘满、且无过期文件情况下 TRUE 表示强制删除文件,优先保证服务可用; FALSE 标记服务不可用,文件不删除
cleanFileForciblyEnable=TRUE
#Topic持久化文件
topicConfigPath=/usr/local/rocketmq/store/config/topics.json
#ConsumerOffset持久化文件
consumerOffsetPath=/usr/local/rocketmq/store/config/consumerOffset.json
#subscriptionGroup 持久化文件
subscriptionGroupPath=/usr/local/rocketmq/store/config/subscriptionGroup.json
sendMessageThreadPoolNums=128
  • broker-a-slave.properties
listenPort=10911
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#启动MessageFilterServer进程
filterServerNums=1
brokerIP1=192.168.63.5
brokerName=brocker-a
#Broker所属集群
brokerClusterName=qipuTestCluster
#0:Master >0:Slave
brokerId=1
#Broker 的角色
#ASYNC_MASTER 主从异步复制
#SYNC_MASTER  主从同步双写
#SLAVE    Slave
brokerRole=SLAVE
#刷盘方式
#ASYNC_FLUSH:异步刷盘
#SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_FLUSH
#线下开启,线上关闭
autoCreateTopicEnable=TRUE
#自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=TRUE
#是否拒绝事务消息接入
rejectTransactionMessage=FALSE
#是否从web服务器获取NameServer地址,针对大规模的Broker集群建议使用这种方式
fetchNamesrvAddrByAddressServer=FALSE
#日志根路径
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
#删除文件时间点,默认凌晨4点
deleteWhen=4
#文件保留时间,默认48小时
fileReservedTime=48
#是否开启消息索引功能
messageIndexEnable=TRUE
#是否提供安全的消息索引机制,索引保证不丢
messageIndexSafe=FALSE
#在 Slave 上直接设置 Master地址,默认从 Name Server 上自动获取,也可以手工强制配置
#haMasterAddress=
flushIntervalCommitLog=1000
#磁盘满、且无过期文件情况下 TRUE 表示强制删除文件,优先保证服务可用; FALSE 标记服务不可用,文件不删除
cleanFileForciblyEnable=TRUE
#Topic持久化文件
topicConfigPath=/usr/local/rocketmq/store/config/topics.json
#ConsumerOffset持久化文件
consumerOffsetPath=/usr/local/rocketmq/store/config/consumerOffset.json
#subscriptionGroup 持久化文件
subscriptionGroupPath=/usr/local/rocketmq/store/config/subscriptionGroup.json
sendMessageThreadPoolNums=128
  • broker-b-master.properties
listenPort=10911
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#启动MessageFilterServer进程
filterServerNums=1
brokerIP1=192.168.63.4
brokerName=brocker-b
#Broker所属集群
brokerClusterName=qipuTestCluster
#0:Master >0:Slave
brokerId=0
#Broker 的角色
#ASYNC_MASTER 主从异步复制
#SYNC_MASTER  主从同步双写
#SLAVE    Slave
brokerRole=ASYNC_MASTER
#刷盘方式
#ASYNC_FLUSH:异步刷盘
#SYNC_FLUSH:同步刷盘
flushDiskType=ASYNC_MASTER
#线下开启,线上关闭
autoCreateTopicEnable=TRUE
#自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=TRUE
#是否拒绝事务消息接入
rejectTransactionMessage=FALSE
#是否从web服务器获取NameServer地址,针对大规模的Broker集群建议使用这种方式
fetchNamesrvAddrByAddressServer=FALSE
#日志根路径
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
#删除文件时间点,默认凌晨4点
deleteWhen=4
#文件保留时间,默认48小时
fileReservedTime=48
#是否开启消息索引功能
messageIndexEnable=TRUE
#是否提供安全的消息索引机制,索引保证不丢
messageIndexSafe=FALSE
#在 Slave 上直接设置 Master地址,默认从 Name Server 上自动获取,也可以手工强制配置
#haMasterAddress=
flushIntervalCommitLog=1000
#磁盘满、且无过期文件情况下 TRUE 表示强制删除文件,优先保证服务可用; FALSE 标记服务不可用,文件不删除
cleanFileForciblyEnable=TRUE
#Topic持久化文件
topicConfigPath=/usr/local/rocketmq/store/config/topics.json
#ConsumerOffset持久化文件
consumerOffsetPath=/usr/local/rocketmq/store/config/consumerOffset.json
#subscriptionGroup 持久化文件
subscriptionGroupPath=/data/logs/rocketmq/store/config/subscriptionGroup.json
sendMessageThreadPoolNums=128
  • broker-b-slave.properties
listenPort=10911
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#启动MessageFilterServer进程
filterServerNums=1
brokerIP1=192.168.63.6
brokerName=brocker-b
#Broker所属集群
brokerClusterName=qipuTestCluster
#0:Master >0:Slave
brokerId=1
#Broker 的角色
#ASYNC_MASTER 主从异步复制
#SYNC_MASTER  主从同步双写
#SLAVE    Slave
brokerRole=SLAVE
#刷盘方式
#ASYNC_FLUSH:异步刷盘
#SYNC_FLUSH:同步刷盘
flushDiskType=SYNC_FLUSH
#线下开启,线上关闭
autoCreateTopicEnable=TRUE
#自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=TRUE
#是否拒绝事务消息接入
rejectTransactionMessage=FALSE
#是否从web服务器获取NameServer地址,针对大规模的Broker集群建议使用这种方式
fetchNamesrvAddrByAddressServer=FALSE
#日志根路径
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
#删除文件时间点,默认凌晨4点
deleteWhen=4
#文件保留时间,默认48小时
fileReservedTime=48
#是否开启消息索引功能
messageIndexEnable=TRUE
#是否提供安全的消息索引机制,索引保证不丢
messageIndexSafe=FALSE
#在 Slave 上直接设置 Master地址,默认从 Name Server 上自动获取,也可以手工强制配置
#haMasterAddress=
flushIntervalCommitLog=1000
#磁盘满、且无过期文件情况下 TRUE 表示强制删除文件,优先保证服务可用; FALSE 标记服务不可用,文件不删除
cleanFileForciblyEnable=TRUE
#Topic持久化文件
topicConfigPath=/usr/local/rocketmq/store/config/topics.json
#ConsumerOffset持久化文件
consumerOffsetPath=/usr/local/rocketmq/store/config/consumerOffset.json
#subscriptionGroup 持久化文件
subscriptionGroupPath=/usr/local/rocketmq/store/config/subscriptionGroup.json
sendMessageThreadPoolNums=128
阅读 7.3k
7 个回答

同样遇到这个问题,踩坑无数:

  1. 关闭master、slave防火墙,确保10911、10909、10912(主要用于slave同master同步)端口对外开放;
  2. 删除salve rocketmq安装目录,从master上拷贝一份到slave上,确保brokerName一致;
  3. 查看namesrv注册信息,在master中开启BrokerHAIP地址,供slave同步消息的地址:brokerIP2;在slave中开启Master服务器IP地址与端口号:haListenPort、haMasterAddress
新手上路,请多包涵

你好,你可先随意在一台slave的机器中看下broker打印的日志,该slave是否注册到了namesrv中呢?也可以将HA方式改成同步双写模式,就可以在producer发送消息会返回具体的问题。

新手上路,请多包涵

你这个问题解决了吗

新手上路,请多包涵

您好,请问您这个问题解决了吗

新手上路,请多包涵

踩了一波坑,可能和楼主的不一样。我是主备的brokerName配置的不一样导致的。

新手上路,请多包涵

master配置文件,brokerRole=ASYNC_FLUSH配置错了(你填的是持久化刷盘方式...)。这个属性是master节点怎么刷新到slave节点,填这两个ASYNC_MASTER、SYNC_MASTER,自己都注释了。。。
今天脑子秀逗了死怼rocketmq,还好没关网页,看了好几眼。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏