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

回答:

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

  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,还好没关网页,看了好几眼。

回答:

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

以上是 RocketMQ 双master双slave 异步刷盘,Produce提交后,slave不能同步刷新mater的数据 的全部内容, 来源链接: utcz.com/p/175912.html

回到顶部