RocketMQ双主双从异步复制集群搭建(保证好使)
一.首先需要四个服务器
二.下载rocketmq
Apache:
百度网盘下载
提取码:84ok
三.安装
1.在/usr/local/目录下创建rocketmq-4.7.1文件夹 mkdir /usr/local/rocketmq-4.7.1
3.建立软连接 便于操作(可以不用管此操作) ln -s rocketmq-4.7.1/ rocketmq
4.创建rocketmq相关存储路径(根据当前broker的角色创建对应目录,集群模式,所以每个服务器都要创建)
mkdir /apps/usr/rocketmq/master
mkdir /apps/usr/rocketmq/master/store
mkdir /apps/usr/rocketmq/slave
mkdir /apps/usr/rocketmq/slave/store
创建日志文件夹 mkdir /apps/usr/rocketmq/logs
格式化rocketmq目录相关日志 (就是将你的mq打印日志修改成你上面建的地址,这样就可以启动后出现问题 去/apps/usr/rocketmq/logs查看日志)
执行命令: cd /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf/conf && sed -i 's#${user.home}#/apps/usr/rocketmq#g' *.xml
5. 修改jvm启动参数( 修改runserver.sh(-Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=320m) 和 runbroker.sh(-Xms256m -Xmx256m -Xmn256m)中的启动内存配置,在mq中bin文件下,不修改启动时候容易报错)
6. runbroker.sh配置信息
runserver.sh配置信息
7.这里注意一下,不同服务器数量搭建不同架构模式的rocketmq集群是不同的下面搭建的模式是2s-2s-async(两主两从异步同步模式),进入配置文件夹cd /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf
如果要建立三主三从异步复制的话多建立一个文件夹其他情况相同
8.进入2m-2s-async目录
9.我将每个文件复制在这里
主:broker-a.properties
#所属集群名字
brokerClusterName=rocketmq-aspire
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.95.130:9876;192.168.95.131:9876;192.168.95.132:9876;192.168.95.133:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=01
#文件保留时间,默认 48 小时
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/usr/rocketmq/master/store
#commitLog 存储路径
#storePathCommitLog=/apps/usr/rocketmq/master/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/apps/usr/rocketmq/master/store/consumequeue
#消息索引存储路径
#storePathIndex=/apps/usr/rocketmq/master/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/apps/usr/rocketmq/master/store/checkpoint
#abort 文件存储路径
#abortFile=/apps/usr/rocketmq/master/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
#拉消息线程池数量
#pullMessaeThreadPoolNums=128
从:broker-a-s.properties
#所属集群名字
brokerClusterName=rocketmq-aspire
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.95.130:9876;192.168.95.131:9876;192.168.95.132:9876;192.168.95.133:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=01
#文件保留时间,默认 48 小时
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/usr/rocketmq/slave/store
#commitLog 存储路径
#storePathCommitLog=/apps/usr/rocketmq/slave/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/apps/usr/rocketmq/slave/store/consumequeue
#消息索引存储路径
#storePathIndex=/apps/usr/rocketmq/slave/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/apps/usr/rocketmq/slave/store/checkpoint
#abort 文件存储路径
#abortFile=/apps/usr/rocketmq/slave/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
#拉消息线程池数量
#pullMessaeThreadPoolNums=128
主:broker-b.properties
#所属集群名字
brokerClusterName=rocketmq-aspire
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.95.130:9876;192.168.95.131:9876;192.168.95.132:9876;192.168.95.133:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=01
#文件保留时间,默认 48 小时
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/usr/rocketmq/master/store
#commitLog 存储路径
#storePathCommitLog=/apps/usr/rocketmq/master/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/apps/usr/rocketmq/master/store/consumequeue
#消息索引存储路径
#storePathIndex=/apps/usr/rocketmq/master/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/apps/usr/rocketmq/master/store/checkpoint
#abort 文件存储路径
#abortFile=/apps/usr/rocketmq/master/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
#拉消息线程池数量
#pullMessaeThreadPoolNums=128
从:broker-a-s.properties
#所属集群名字
brokerClusterName=rocketmq-aspire
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.95.130:9876;192.168.95.131:9876;192.168.95.132:9876;192.168.95.133:9876;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=01
#文件保留时间,默认 48 小时
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/apps/usr/rocketmq/slave/store
#commitLog 存储路径
#storePathCommitLog=/apps/usr/rocketmq/slave/store/commitlog
#消费队列存储路径存储路径
#storePathConsumeQueue=/apps/usr/rocketmq/slave/store/consumequeue
#消息索引存储路径
#storePathIndex=/apps/usr/rocketmq/slave/store/index
#checkpoint 文件存储路径
#storeCheckpoint=/apps/usr/rocketmq/slave/store/checkpoint
#abort 文件存储路径
#abortFile=/apps/usr/rocketmq/slave/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
#拉消息线程池数量
#pullMessaeThreadPoolNums=128
10.1: 关闭Broker:bin下面:sh mqshutdown broker
关闭 Name Serverr:bin下面:sh mqshutdown namesrv
11.然后启动 (在bin目录下)nameserver
nohup sh mqnamesrv >>/dev/null 2>&1 &(这个不打印启动日志)
nohup sh mqnamesrv &(这个打印启动日志)
12.192.168.62.59启动broker
nohup sh mqbroker -c /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &
12.192.168.62.60启动broker
nohup sh mqbroker -c /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf/2m-2s-async/broker-b.properties >/dev/null 2>&1 &
12.192.168.62.63启动broker
nohup sh mqbroker -c /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &
12.192.168.62.64启动broker
nohup sh mqbroker -c /usr/local/rocketmq-4.7.1/rocketmq-all-4.7.1-bin-release/conf/2m-2s-async/broker-b-s.properties >/dev/null 2>&1 &
12. jps看到BrokerStartup和NamesrvStartup说明启动mq成功(也可以去/apps/usr/rocketmq/logs/rocketmqlogs目录下查看启动信息日志和你如果发生错误时候的日志)
13.下载 rocketmq-console百度网盘地址
提取码:8wzp
拿出一个服务器放rocketmq-console
mkdir /apps/mq-console
将你在网盘的下载后直接放入/apps/mq-console文件下
进入 /apps/mq-console文件下nohup java -jar rocketmq-console-ng-1.0.1.jar &
此时启动成功后打卡浏览器输入 http://192.168.95.130:8080/
如果上面截图中地址不是你的mq地址,你直接可以复制你的地址,直接复制到你的红色框内,点击更新资料,就换成你自己的mq集群地址了
下面图片就是说明你部署rocketmq集群成功
到这里结束了....................