RocketMQ中两个重要的组成部分就是NameServer
和Broker
NameServer
:相当于是Broker的注册中心,能够管理Broker节点,为生产者和消费者提供路由信息。
Broker
:则是背后真正的消息服务器。Broker在启动时向NameServer注册,消息生产者(Producer)在发送消息之前先从NameServer获取Broker服务器列表,然后根据负载从列表中选择一台Broker进行消息发送。
NameServer和Broker分别运行在各自独立的jvm进程中,有着各自不同的集群模式。
NameServer集群
只需要部署多个节点即可,各节点之间无需信息同步。
Broker集群
则分为多种模式:主从模式
,双主模式
,双主双从模式
,多主多从模式
,Broker又有同步刷盘
和异步刷盘
模式。
如下是RocketMQ的集群部署图:
本文主要讲解如何在windows系统搭建RocketMQ集群模式。
主要搭建两个节点的NameServer集群,和一主一从的Broker集群。
1、到RocketMQ官网下载二进制压缩包并解压
http://rocketmq.apache.org/release_notes/release-notes-4.7.0/ 。
conf 文件夹中目录及文件如下:
2、搭建NameServer集群
为了不污染解压后的目录和文件,我们可以在conf文件夹的同级目录下创建myconf目录,用于存在自定义的配置文件。
NameServer默认的端口是9876,在同一台机器启动两个不同实例,我们需要使用的端口号,
在myconf目录新建两个namesrv1.properties
,和namesrv2.properties
,用于指定不同的服务端。配置内容如下:namesrv1.properties指定端口为9876,namesrv2.properties指定端口为9877,
listenPort=9877
启动时指定相应的配置文件即可,运行结果如下说明启动成功
到此NameServer集群搭建成功。
3、搭建一主一从异步落盘的Broker集群
从/conf/2m-2s-async
目录将broker-a.properties
(主节点配置文件),broker-a-s.properties
(从节点配置文件)两个配置文件复制到myconf
目录,并做如下修改。
主节点配置broker-a.properties 内容如下
brokerClusterName=DefaultCluster
brokerName=broker-a
#0表示是一个主节点, >0表示Slave
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876;127.0.0.1:9877
#允许自动创建主题
autoCreateTopicEnable=true
#存储路径
storePathRootDir=D:\\rocketmq\\store_master
#commitLog存储路径
storePathCommitLog=D:\\rocketmq\\store_master\\commitLog
#消费队列存储路径
storePathConsumerQueue=D:\\rocketmq\\store_master\\consumerqueue
#消息索引存储路径
storePathIndex=D:\\rocketmq\\store_master\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\rocketmq\\store_master\\checkpoint
#abort 文件存储路径
abortFile=D:\\rocketmq\\store_master\\abort
从节点配置broker-a-s.properties 内容如下
brokerClusterName=DefaultCluster
#从节点的brokerName必须和主节点一样
brokerName=broker-a
#0表示是一个主节点, >0表示Slave
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876;127.0.0.1:9877
注意需改端口,并且要和默认的10911相差5以上
listenPort=10921
#允许自动创建主题
autoCreateTopicEnable=true
#存储路径
storePathRootDir=D:\\rocketmq\\store_slave
#commitLog存储路径
storePathCommitLog=D:\\rocketmq\\store_slave\\commitLog
#消费队列存储路径
storePathConsumerQueue=D:\\rocketmq\\store_slave\\consumerqueue
#消息索引存储路径
storePathIndex=D:\\rocketmq\\store_slave\\index
#checkpoint 文件存储路径
storeCheckpoint=D:\\rocketmq\\store_slave\\checkpoint
#abort 文件存储路径
abortFile=D:\\rocketmq\\store_slave\\abort
修改好配置之后,按照如下方式启动,如果打印相同的信息则表示成功!!!
4、可以通过RocketMQ的扩展工具查看集群信息
GitHub地址:https://github.com/apache/rocketmq-externals.git
下载后需要修改rocketmq-console
模块的application.properties
配置
rocketmq.config.namesrvAddr=127.0.0.1:9876;127.0.0.1:9876
启动org.apache.rocketmq.console.App
启动类,浏览器访问http://127.0.0.1:8080/
即可看到如下信息。
5、RocketMQ根据配置生成的数据存储目录
6 注意
在同一台集群部署多个实例的情况下,两个实例日志打印到的是同一个位置,可能造成日志混乱,需要对启动脚本更改,使用不用的环境目录才能修改。有需要了解的可以留言互相交流!