RocketMQ 集群同步双写部署

本文大部分来自https://blog.csdn.net/wangwenzhe222/article/details/85994388,原作者写配置的时候写错了个配置,我修正过来了,按照配置做最后能正常启动。
环境:

centos 6 64位

jdk:1.8

rocketMQ版本:4.8

模式:两 master 两 slave 同步双写模式

IP 部署服务

192.168.168.101 NameServer –

192.168.168.102 NameServer –

192.168.168.101 broker-a master

192.168.168.101 broker-b-s slave

192.168.168.102 broker-b master

192.168.168.102 broker-a-s slave

1.首先安装好jdk并配置好环境变量(其它文章有,不再详述)

2.下载安装rocketMQ

不要选择先配置一个机器,直接拷贝到第二台机器这种方式!!!

不要选择先配置一个机器,直接拷贝到第二台机器这种方式!!!

不要选择先配置一个机器,直接拷贝到第二台机器这种方式!!!

要配置好第一个,再去配置第二个,因为总共就两台,直接复制容易出错(当然熟练的也可以复制后修改文件内容和文件名,初学者还是一步一个脚印)

官网下载链接:http://mirror.bit.edu.cn/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip

2.1下载后解压(两台机器都需要下载解压,如果linux没有安装.zip格式解压压缩软件的话,安装一个,安装命令:yum -y install zip unzip)

2.1.1解压后配置rocketMQ环境变量(两台都需要配置)

命令:vi /etc/profile

追加如下内容:

#set rocketMQ environment

export ROCKETMQ_HOME=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release

export PATH= P A T H : PATH: PATH:ROCKETMQ_HOME/bin

使修改生效

命令:source /etc/profile

2.1.2修改rocketMQ内存配置(两台都需要修改)

进入到rocketMQ的bin目录修改

命令:vi runserver.sh

将内存修改如下(默认分别是4g 8g,如果电脑配置达到那么高可以不用修改,否则启动不了,提示内存不足)

命令:vi runbroker.sh

将内存修改如下

2.2配置

2.2.1先配置192.168.168.101这台机器

进入配置文件目录

cd rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/

看一下都有哪些文件

ll

2.2.1.1修改broker-a.properties文件内容如下(其中ip要替换为你的服务器对应ip)

具体配置文字版:

#Below 7 lines is default config

#brokerClusterName=DefaultCluster

#brokerName=broker-a

#brokerId=0

#deleteWhen=04

#fileReservedTime=48

#brokerRole=SYNC_MASTER

#flushDiskType=ASYNC_FLUSH

#add time=2019-01-06 16:59

#所属集群名称,如果多个master,那么每个master配置的名称应该一致,要不然识别不了

brokerClusterName=rocketmq-cluster

#broker名称

brokerName=broker-a

#0 表示master,>0 表示slave

brokerId=0

#nameServer地址,分号隔开

namesrvAddr=192.168.168.101:9876;192.168.168.102:9876

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数

defaultTopicQueueNums=4

#是否允许broker自动创建topic,建议线下开启,线上关闭

autoCreateTopicEnable=true

#是否允许broker自动创建订阅组,建议线下开始,线上关闭

autoCreateSubscriptionGroup=true

#broker对外服务的监听端口,

#同一台机器部署多个broker,端口号要不同,且端口号之间要相距大些

listenPort=10911

#删除文件的时间节点,默认凌晨4点

deleteWhen=04

#文件保留时间,默认48小时

fileReservedTime=120

#commitLog每个文件的大小,默认大小1g

mapedFileSizeCommitLog=1073741824

#consumeQueue每个文件默认存30w条,根据自身业务进行调整

mapedFileSizeConsumeQueue=300000

destroyMapedFileInterval=120000

redeleteHangedFileInterval=120000

#检查物理文件磁盘空间

diskMaxUsedSpaceRatio=88

#store存储路径,master与slave目录要不同

storePathRootDir=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store

#commitLog存储路径

storePathCommitLog=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/commitlog

#限制的消息大小

maxMessageSize=65536

flushCommitLogLeastPages=4

flushConsumeQueueLeastPages=2

flushCommitLogThoroughInterval=10000

flushConsumeQueueThoroughInterval=60000

checkTransactionMessageEnable=false

#发消息线程池数

sendMessageThreadPoolNums=128

#拉去消息线程池数

pullMessageThreadPoolNums=128

#broker角色:

#ASYNC_MASTER 异步复制master

#SYNC_MASTER 同步复制master

#SLAVE 从

brokerRole=SYNC_MASTER

#刷盘方式

#ASYNC_FLUSH 异步刷盘

#SYNC_FLUSH 同步刷盘

flushDiskType=ASYNC_FLUSH

具体配置图片版:

2.2.1.2修改broker-b-s.properties文件内容如下(其中ip要替换为你的服务器对应ip)

配置文字版:

#Below 7 lines is default config

#brokerClusterName=DefaultCluster

#brokerName=broker-b

#brokerId=1

#deleteWhen=04

#fileReservedTime=48

#brokerRole=SLAVE

#flushDiskType=ASYNC_FLUSH

#add time=2019-01-06 17:01

brokerClusterName=rocketmq-cluster

brokerName=broker-b

brokerId=1

namesrvAddr=192.168.168.101:9876;192.168.168.102:9876

defaultTopicQueueNums=4

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

listenPort=10950

deleteWhen=04

fileReservedTime=120

mapedFileSizeCommitLog=1073741824

mapedFileSizeConsumeQueue=300000

destroyMapedFileInterval=120000

redeleteHangedFileInterval=120000

diskMaxUsedSpaceRatio=88

storePathRootDir=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave

storePathCommitLog=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave/commitlog

maxMessageSize=65536

flushCommitLogLeastPages=4

flushConsumeQueueLeastPages=2

flushCommitLogThoroughInterval=10000

flushConsumeQueueThoroughInterval=60000

checkTransactionMessageEnable=false

sendMessageThreadPoolNums=128

pullMessageThreadPoolNums=128

brokerRole=SLAVE

flushDiskType=ASYNC_FLUSH

配置图片版:

2.2.1.3上面配置中用到了几个目录,需要创建下目录

命令:mkdir -p /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave/commitlog

2.2.2配置192.168.168.102

进入配置文件目录

cd rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/

再看看有什么配置文件,加深一下印象

ll

2.2.2.1修改broker-b.properties内容,这里看清楚文件名

配置文字版:

#Below 7 lines is default config

#brokerClusterName=DefaultCluster

#brokerName=broker-b

#brokerId=0

#deleteWhen=04

#fileReservedTime=48

#brokerRole=SYNC_MASTER

#flushDiskType=ASYNC_FLUSH

#add time=2019-01-06 17:06

brokerClusterName=rocketmq-cluster

brokerName=broker-b

brokerId=0

namesrvAddr=192.168.168.101:9876;192.168.168.102:9876

defaultTopicQueueNums=4

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

listenPort=10911

deleteWhen=04

fileReservedTime=120

配置图片版:

2.2.2修改broker-a-s.properties文件内容

配置文字版:

#Below 7 lines is default config

#brokerClusterName=DefaultCluster

#brokerName=broker-a

#brokerId=1

#deleteWhen=04

#fileReservedTime=48

#brokerRole=SLAVE

#flushDiskType=ASYNC_FLUSH

#add time=2019-01-06 17:04

brokerClusterName=rocketmq-cluster

brokerName=broker-a

brokerId=1

namesrvAddr=192.168.168.101:9876;192.168.168.102:9876

defaultTopicQueueNums=4

autoCreateTopicEnable=true

autoCreateSubscriptionGroup=true

listenPort=10950

deleteWhen=04

fileReservedTime=120

mapedFileSizeCommitLog=1073741824

mapedFileSizeConsumeQueue=300000

destroyMapedFileInterval=120000

redeleteHangedFileInterval=120000

diskMaxUsedSpaceRatio=88

storePathRootDir=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave

storePathCommitLog=/usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave/commitlog

maxMessageSize=65536

flushCommitLogLeastPages=4

flushConsumeQueueLeastPages=2

flushCommitLogThoroughInterval=10000

flushConsumeQueueThoroughInterval=60000

checkTransactionMessageEnable=false

sendMessageThreadPoolNums=128

pullMessageThreadPoolNums=128

brokerRole=SLAVE

flushDiskType=ASYNC_FLUSH

配置图片版:

2.2.2.3上面配置中用到了几个目录,需要创建下目录

命令:mkdir -p /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/data/store/slave/commitlog

3.启动

3.1先启动192.168.168.101

3.1.1启动nameserver

进入到rocketMQ的bin目录

命令:cd …/…/bin

看一下都有什么命令

命令:ll

启动nameserver

命令:nohup sh mqnamesrv &

3.1.2启动broker-a Master

命令:nohup sh mqbroker -c /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-a.properties &

3.1.3启动broker-b Slave

命令:nohup sh mqbroker -c /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-b-s.properties &

3.2启动启动192.168.168.102

3.2.1启动nameserver

进入到rocketMQ的bin目录

cd …/…/bin

启动nameserver

命令:nohup sh mqnamesrv &

3.2.2启动broker-b Master

命令:

nohup sh mqbroker -c /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-b.properties &

3.2.3启动broker-a Slave

命令:

nohup sh mqbroker -c /usr/local/src/rocketmq/rocketmq-all-4.3.2-bin-release/conf/2m-2s-sync/broker-a-s.properties &

4.查看状态

进入192.168.168.101的rocketMQ的bin目录后输入命令查看集群状态(进入到192.168.168.102的bin目录输入下面的命令效果一样;将rocketmq的bin配置到path后任意目录输入下面的命令均可)

命令:sh mqadmin clusterlist -n 192.168.168.101:9876

5.遇到的坑

坑1:

其实不算坑

就是安装的时候先安装好一个,另外一个直接scp复制第一个安装目录到第二台机器导致的问题

所以,不熟练的时候,一定要一个安装好再安装另一个,以防止出错,不要眼高手低,犯低级错误!

坑2.直接将Master的配置复制到Slave,只修改brokerId

这样会导致Slave无法启动,因为Slave的storePathRootDir会和另一个broker的Master冲突,错误提示是:lock failed, MQ already started

这个只需要保证Master和Slave的storePathRootDir不一样即可(broker-x 的Slave和broker-y的Master不能一致,本例中broker-a的Master不能和broker-b Slave一样)

6.在安装好集群后,可以使用rocketmq-console来更直观查看rocketmq信息,关于这个rocketmq-console,目前网上都是编译rocketmq-console的源码来打包,没有一个地方直接方便下载,于是我编译源码后打包,出来个jar包,放在csdn,供大家下载吧:https://download.csdn.net/download/lyd135364/14839639

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值