多 Master 多 Slave 模式,同步双写

  • Post author:
  • Post category:其他


准备工作:

1.linux4台

192.168.247.130 
192.168.247.131
192.168.247.132
192.168.247.133

2.同时修改四台机器的hosts的文件如下:

#vim /etc/hosts

192.168.247.130 rocketmq-nameServer1
192.168.247.130 rocketmq-master1
192.168.247.131 rocketmq-nameServer2
192.168.247.131 rocketmq-master2
192.168.247.132 rocketmq-nameServer3
192.168.247.132 rocketmq-master1-slave
192.168.247.133 rocketmq-nameServer4
192.168.147.133 rocketmq-master2-slave



192.168.247.130 zh130
192.168.247.131 zh131
192.168.247.132 zh132
192.168.247.133 zh133

3.同时解压四台机器上的tar包

tar -zxvf alibaba-rocketmq-3.2.6.tar.gz -C /usr/local/

4.同时更改文件目录

mv alibaba-rocketmq alibaba-rocketmq-3.2.6

5.同时创建软连接地址(快捷方式)

ln -s alibaba-rocketmq-3.2.6 rocketmq

6.同时创建文件存储路径(用于mq持久化数据存储)

commitlog:发送的数据储存到commitlog

consumequeue:偏移量

index:索引

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index


开始修改配置文件

1.同时进入conf目录

cd /usr/local/rocketmq/conf

2.进入2m-2s-async配置文件(与双主的配置不同却别在于双主的配置在no-slave下)

# cd /usr/local/rocketmq/conf/2m-2s-async

3.修改四台机器的2m-2s-async下的配置文件:

broker-a.propertie

#所属集群名字 
brokerClusterName=rocketmq-cluster 
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割
brokerId=0 
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4 
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=true 
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=true 
#Broker 对外服务的监听端口 
listenPort=10911 
#删除文件时间点,默认凌晨 4点 
deleteWhen=04 
#文件保留时间,默认 48 小时 
fileReservedTime=120 
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000 
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=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=ASYNC_MASTER 
#刷盘方式 
#- ASYNC_FLUSH 异步刷盘 
#- SYNC_FLUSH 同步刷盘 
flushDiskType=ASYNC_FLUSH 
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128
#拉消息线程池数量 
#pullMessageThreadPoolNums=128

broker-a-s.propertie

#所属集群名字 
brokerClusterName=rocketmq-cluster 
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割
brokerId=1 
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4 
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=true 
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=true 
#Broker 对外服务的监听端口 
listenPort=10911
#删除文件时间点,默认凌晨 4点 
deleteWhen=04 
#文件保留时间,默认 48 小时 
fileReservedTime=120 
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000 
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=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=SLAVE
#刷盘方式 
#- ASYNC_FLUSH 异步刷盘 
#- SYNC_FLUSH 同步刷盘 
flushDiskType=ASYNC_FLUSH 
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128
#拉消息线程池数量 
#pullMessageThreadPoolNums=128

broker-b.properties

#所属集群名字 
brokerClusterName=rocketmq-cluster 
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割
brokerId=0 
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4 
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=true 
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=true 
#Broker 对外服务的监听端口 
listenPort=10911 
#删除文件时间点,默认凌晨 4点 
deleteWhen=04 
#文件保留时间,默认 48 小时 
fileReservedTime=120 
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000 
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=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=ASYNC_MASTER 
#刷盘方式 
#- ASYNC_FLUSH 异步刷盘 
#- SYNC_FLUSH 同步刷盘 
flushDiskType=ASYNC_FLUSH 
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128
#拉消息线程池数量 
#pullMessageThreadPoolNums=128

broker-b-s.propertie

#所属集群名字 
brokerClusterName=rocketmq-cluster 
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割
brokerId=1 
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876;rocketmq-nameserver3:9876;rocketmq-nameserver4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 
defaultTopicQueueNums=4 
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 
autoCreateTopicEnable=true 
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 
autoCreateSubscriptionGroup=true 
#Broker 对外服务的监听端口 
listenPort=10911 
#删除文件时间点,默认凌晨 4点 
deleteWhen=04 
#文件保留时间,默认 48 小时 
fileReservedTime=120 
#commitLog每个文件的大小默认1G 
mapedFileSizeCommitLog=1073741824 
#ConsumeQueue每个文件默认存30W条,根据业务情况调整 
mapedFileSizeConsumeQueue=300000 
#destroyMapedFileIntervalForcibly=120000 
#redeleteHangedFileInterval=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=SLAVE
#刷盘方式 
#- ASYNC_FLUSH 异步刷盘 
#- SYNC_FLUSH 同步刷盘 
flushDiskType=ASYNC_FLUSH 
#checkTransactionMessageEnable=false
#发消息线程池数量 
#sendMessageThreadPoolNums=128
#拉消息线程池数量 
#pullMessageThreadPoolNums=128

4.同时修改日志配置文件路径

mkdir -p /usr/local/rocketmq/logs
cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml

4.同时修改启动脚本jvm配置参数

# vim /usr/local/rocketmq/bin/runbroker.sh

server -Xms5g -Xmx4g -Xmn2g改为server -Xms1g -Xmx1g -Xmn512m

# 开发环境JVM Configuration
#============================================================
==================
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"

# vim /usr/local/rocketmq/bin/runserver.sh

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -
XX:PermSize=128m -XX:MaxPermSize=320m"

5.同时启动NameServer

进入目录
cd /usr/local/rocketmq/bin
启动服务
nohup sh mqnamesrv &

6.启动BrokerServer A主节点

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &

7.启动BrokerServer A-s从节点

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &

8.启动BrokerServer B主节点

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &

启动BrokerServer B-s从节点

nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &


转载于:https://my.oschina.net/2286252881/blog/858335