window系统搭建RocketMQ 4.8.0版本 伪集群

Apache RocketMQ发布4.8.0,DLedger模式全面提升!

RocketMQ中两个重要的组成部分就是NameServerBroker
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/dowloading/releases/
在这里插入图片描述
conf 文件夹中目录及文件如下:
在这里插入图片描述
2、搭建NameServer集群
为了不污染解压后的目录和文件,我们可以在conf文件夹的同级目录下创建myconf目录,用于存在自定义的配置文件。
NameServer默认的端口是9876,在同一台机器启动两个不同实例,我们需要使用的端口号,
在myconf目录新建两个namesrv1.properties,和namesrv2.properties,用于指定不同的服务端口。
namesrv1.properties指定端口为9876
namesrv2.properties指定端口为9877
配置项如下:

listenPort=9877

在这里插入图片描述
在这里插入图片描述
启动之前需要指定一下ROCKETMQ_HOME环境变量
在这里插入图片描述
启动时指定相应的配置文件即可,运行结果如下说明启动成功
在这里插入图片描述
到此NameServer集群搭建成功!!!

启动时可能出现两个警告

PS D:\common\rocketmq\rocketmq-all-4.8.0\bin> .\mqnamesrv.cmd -c ..\myconf\namesrv1.properties
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
load config properties file OK, ..\myconf\namesrv1.properties
The Name Server boot success. serializeType=JSON

原因:RocketMQ runserver.cmd脚本中,使用了即将废弃的jvm参数-XX:+UseCMSCompactAtFullCollection,并且通过-XX:-UseParNewGC关闭了新生代的并行收集器,解决方案就是去掉这两个参数。

set "JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"

-XX:+UseConcMarkSweepGC用于老年代,该参数开启后,新生代默认使用 -XX:+UseParNewGC

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=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH

#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876;127.0.0.1:9877

#允许自动创建主题
autoCreateTopicEnable=true

#注意需改端口,并且要和默认的10911相差5以上
listenPort=10921

#存储路径
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 注意
在同一台集群部署多个实例的情况下,两个实例日志打印到的是同一个位置,可能造成日志混乱,需要对启动脚本更改,使用不用的环境目录才能修改。有需要了解的可以留言互相交流!

猜你喜欢

转载自blog.csdn.net/u013202238/article/details/105881073