上面就是我参考的文档。
第一步 首先2主2从搭建需要至少2台的虚拟机
第二步 将虚拟机的环境搭建好,特别是Java环境,jdk最好是1.8版本
第三步 去官网下载rocketmq
一定要下这种的,这种可以直接扔到服务器上 unzip就可以解压就可以用,另一个还需要编译,因为咋传这个资源都有重复的,所以就不传了。
第四步 修改rocketmq的配置文件
/home/rocketmq/conf/2m-2s-async 在这个目录下的
先改broker-a.properties的配置
#所属集群名字
brokerClusterName=xxxxxx(自己想个集群名字)
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示Master, > 0 表示slave
brokerId=0
#nameServer 地址,分号分割
namesrvAddr=namesrv1:9876;namesrv2:9876(这里跟namesrv启动的服务器以及要开的端口)
#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认是凌晨4点
deleteWhen=00 (我这里改为0点)
#文件保留时间,默认48小时,单位是小时,这里保留的是3天
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/store
#commitLog存储路径
storePathCommitLog=/home/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/home/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/home/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/home/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
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128
注意路径你们自己在那解压的文件就在那个路径下,我这是直接解压到home目录下的,因为虚拟机没空间了,我标红色的是特别注意的都需要修改的
mkdir logs 创建存放日志文件(下面都是,只是注意创建文件的路径要和你配置里一样路径)
mkdir store
mkdir commitlog
mkdir consumequeue
mkdir index
再改broker-a-s.properties的配置
#所属集群名字
brokerClusterName=xxxxx(名字需保持一致)
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a-s
#0 表示Master, > 0 表示slave
brokerId=1
#nameServer 地址,分号分割
namesrvAddr=namesrv1:9876;1namesrv2:9876
#在发送消息时,自动创建服务器不存在的Topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10921
#删除文件时间点,默认是凌晨4点
deleteWhen=00
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/astore/store
#commitLog存储路径
storePathCommitLog=/home/rocketmq/astore/commitlog
#消费队列存储路径
storePathConsumeQueue=/home/rocketmq/astore/consumequeue
#消息索引存储路径
storePathIndex=/home/rocketmq/astore/index
#checkpoint 文件存储路径
storeCheckpoint=/home/rocketmq/astore/checkpoint
#abort 文件存储路径
abortFile=/home/rocketmq/astore/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
#发消息线程池数量
#sendMessageTreadPoolNums=128
#拉消息线程池数量
#pullMessageTreadPoolNums=128
需注意的是主和从的配置除了brokerId、listenPort、brokerRole这几个是必须改的,但 存储路径 这个大家很容易弄混淆,若是主从都在一台服务器上,那主从的储存配置必须不同,否则一样无法启动。
其次因为我是模拟虚拟机,配置都不是很高,而mq默认的启动配置需要的内存都要求很高,所以若是直接默认启动,服务也会启动不了,因此需要修改
/home/rocketmq/bin
在这个目录下执行
vim runbroker.sh
修改这里配置降低启动配置。
以及
vim runserver.sh
都需要修改
修改成功后,便可以启动服务了。
同理2主2从,另一台也是如此配置。
先启动namesrv
mqnamesrv的启动命令 将日志打印至指定目录 方便启动失败后可以去看到底出现什么毛病
nohup sh /home/rocketmq/bin/mqnamesrv >/home/rocketmq/logs/mqnamesrv.log 2>&1 &
再执行jps -l命令看看服务是否启动
再启动主broker
将日志打印指定目录
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/2m-2s-async/broker-a.properties > /home/rocketmq/logs/broker-a.log 2>&1 &
最后启动从broker
将日志打印指定目录
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/2m-2s-async/broker-a-s.properties > /home/rocketmq/logs/broker-a-s.log 2>&1 &
然后在服务器上jps -l看看 是否成功启动了两个broker 其中一个是主一个是从。
如图所示便是成功。
当然若是你是配置2主2从,那必须先把两个服务器上的namesrv都启动了再去启动broker,不然会少一个namesrv的服务注册,也会导致启动失败,因此启动优先级是 namesrv>broker-a>broker-a-s (主要比从先启,这个不用我说了吧)
然后可以去找个 rocketmq控制台来看看你的集群部署,这个控制台也是有下的。
下好了,可以直接打开代码
找到application.properties修改里面的配置,port指的是这控制台启动所占用的端口号,name改为你前面部署的rocketmq集群的名字,namesrvaddr改为你部署的两台服务器的namesrv的ip地址和端口,isVIPChannel是指是否开通vip通道,有的话就开通没有就false就行。
配置什么都改完了,然后就可以打开网页查看你的rocketmq集群了
这样就算是搭建成功啦,我一会去学怎么使用rocketmq。