上一篇入门基础部分对rocketmq进行了一个基础知识的讲解说明,在正式使用前我们需要进行环境的搭建,今天就来说一说rockeketmq分布式集群环境的搭建
前言
之前已经介绍了rocketmq的入门基础,相信各位已经基本了解,今天进行一个分布式集群的搭建,其实可以通过本地源码来进行源码的使用和学习,但是作为开发维护人员还是需要去了解分布式集群的部署流程,方便后面集群的调试和测试
配置参数
注意官方给的配置文件都是默认的,最简单的版本,线上的环境需要根据自己需求来进行配置,在这里说明下其中的部分配置参数:
#所属集群名字
brokerClusterName=rocketmq‐cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker‐a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq1:9876;rocketmq2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 72 小时
fileReservedTime=72
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=75
#存储路径
storePathRootDir=/root/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/root/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/root/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/root/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/root/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/root/rocketmq/store/abort
#限制的消息大小 默认4M
#maxMessageSize=4194304
#Broker 的角色
#‐ ASYNC_MASTER 异步复制Master
#‐ SYNC_MASTER 同步双写Master
#‐ SLAVE
brokerRole=SYNC_MASTER
集群类型
搭建说明官方地址:https://github.com/apache/rocketmq/tree/master/docs/cn/operation.md
单机版本根据官方部署即可,这里不再介绍,今天主要说明下如何搭建分布式集群,由于公司环境使用的就是同步双写模式,今天就以这个模式为例来进行搭建
接下来以搭建双Master双Slave模式-同步双写异步刷盘集群为例进行说明
环境准备
这里因为笔者只能在本地进行(测试环境机器不够了。。。),所以使用了2台虚拟机环境,这里用的是VMware启动了2台centos7环境,首先需要提醒的是我们可以先部署一台,另一台直接克隆修改些参数就可以构建完成了,所以先进行一台的部署,如果是物理机环境,直接把源码拷贝下修改参数部署即可
整个集群环境是这样的:
- 机器A: 1 namesrv + 1 broker-master-a + 1 broker-slave-b
- 机器B: 1 namesrv + 1 broker-master-b + 1 broker-slave-a
部署上可以看到我们是用了2台机器互为主备,因为本地不能搞太多,当然,公司测试环境资源不够的话同样可以这样搭建
同时为了集群生产消费观察的便捷,我们还需要一个console,为了部署的方便(因为我懒得再进行下载编译配置参数这套了),我们直接使用docker来部署console,这部分后面会说
搭建流程
在正式搭建前,我们需要在centos7中安装好需要的基础环境:
- jdk8
- maven
- 固定ip
虚拟机固定ip可参考这个地址进行设置:https://segmentfault.com/a/1190000017535131
这里我们一定要注意,先搭建机器A上的集群环境!直接克隆修改些参数就能构建完成,不要多做无用工作,当然,这里只是基于本地虚拟机环境,线上环境复制下整个项目源码到另一台机器上部署就好
配置完成之后,我本地虚拟机机器地址为:
机器A IP: 192.168.211.11
机器B IP: 192.168.211.12 (这个A部署完成后再克隆配置)
下载编译
wget https://archive.apache.org/dist/rocketmq/4.5.2/rocketmq-all-4.5.2-source-release.zip
unzip rocketmq-all-4.5.2-source-release.zip
cd rocketmq-all-4.5.2-source-release
mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/rocketmq-4.5.2
目录下就是编译完成的文件,接下来我们就通过这个进行集群环境部署
DNS修改
修改/etc/hosts文件添加如下地址,为了配置的方便,我们修改虚拟机的本地DNS,便于配置文件的操作
192.168.211.11 rocketmq1
192.168.211.12 rocketmq2
broker配置文件
在正式启动前我们需要先将集群环境需要的配置文件配置好,根据官网说明我们需要修改部分参数,这里我们直接修改conf/2m‐2s‐sync目录下的配置文件来完成
broker-a.properties文件内容修改如下:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
#nameServer地址,分号分割
namesrvAddr=rocketmq1:9876;rocketmq2:9876
#Broker 对外服务的监听端口
listenPort=10911
#存储路径
storePathRootDir=/root/rocketmq-m/store
#commitLog 存储路径
storePathCommitLog=/root/rocketmq-m/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/root/rocketmq-m/store/consumequeue
#消息索引存储路径
storePathIndex=/root/rocketmq-m/store/index
#checkpoint 文件存储路径
storeCheckpoint=/root/rocketmq-m/store/checkpoint
#abort 文件存储路径
abortFile=/root/rocketmq-m/store/abort
broker-a-s.properties文件内容修改如下:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48