RocketMQ 多主多从集群搭建

按规矩先祭出官方文档:http://rocketmq.apache.org/docs/quick-start/ ,任何文章都比不过官方文档,何况还这么详细!

1、下载、安装

首先下载源码,下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.4.0/

然后使用maven进行编译,编译后可以将target目录下apche-rocketmq目录移动至/usr/local/apche-rocketmq(习惯)

  > unzip rocketmq-all-4.4.0-source-release.zip
  > cd rocketmq-all-4.4.0/
  > mvn -Prelease-all -DskipTests clean install -U
  > cd distribution/target/apache-rocketmq

2、启动nameserver

  > nohup sh bin/mqnamesrv &
  > tail -f ~/logs/rocketmqlogs/namesrv.log
  The Name Server boot success..

namesrv 端口号是在源码中是个魔法值9876, 要修改的话修改源码重新编译!

nameserver是RocketMQ的注册中心,遵循AP原则,是无状态的结点,多个nameserver实例互不感知,直接通过broker、producer、customer指定多个nameserver来形成集群,nameserver剔除某个broker不需要进行投票,自身与broker之间2分钟内获取不到心跳即认为broker不可用。

nameserver相对zookeeper轻量,zookeeper遵循CP原则,为保证数据一致性需要互相知道彼此并交互。

3、修改confs/2m-2s-async目录下配置文件broker-a.properties、broker-a-s.properties、broker-b.properties、broker-b-s.properties

#所属集群名称,如果多个master,那么每个master配置的名称应该一致,要不然识别不了
brokerClusterName=rocketmq-cluster
#broker名称
brokerName=broker-a
#0 表示master,>0 表示slave
brokerId=0
#nameServer地址,分号隔开
namesrvAddr=127.0.0.1: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=/root/rocketmq/data/store
#commitLog存储路径
storePathCommitLog=/root/rocketmq/store/commitlog
#限制的消息大小
maxMessageSize=65536
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
checkTransactionMessageEnable=false
#发消息线程池数
sendMessageThreadPoolNums=128
#拉去消息线程池数
pullMessageThreadPoolNums=128
#broker角色:
#ASYSC_MASTER 异步复制master
#SYSC_MASTER 同步复制master
#SLAVE 从
brokerRole=ASYSC_MASTER
#刷盘方式
#ASYNC_FLUSH 异步刷盘
#SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
brokerIP1=10.1.172.181

分别使用4个配置文件启动

nohup bin/mqbroker -c conf/2m-2s-async/broker-a.properties &

broker的java启动配置是初始化4G内存,在一台机器上做测试可能内存不够用导致无法启动,可修改bin/runbroker.sh配置文件中的启动参数。

搭建RocketMQ Console

从githup上直接下载,地址https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console

建议直接下载打了Tag的版本 https://github.com/apache/rocketmq-externals/tree/rocketmq-console-1.0.0
 

下载解压后进入目录,使用maven进行编译打包

mvn clean package -Dmaven.test.skip=true

该项目是使用spring boot开发的一个WEB APP,在target目录生成的jar包可直接运行。

java -jar target/rocketmq-console-ng-1.0.0.jar --server.port=18888 --rocketmq.config.namesrvAddr=10.1.172.181:9876

启动后通过浏览器打开http://10.1.172.171:18888

在Cluster栏可以看到之前创建的集群的状态。

当然功能不止如此,可以通过控制台管理Topic、broker状态监控、customer&producer监控管理、Message管理等等。

猜你喜欢

转载自blog.csdn.net/t5721654/article/details/88814205