RocketMQ下载安装、集群搭建保姆级教程

目录

1.下载安装

2.配置

3.测试

4.集群配置

4.1.规划

4.2.环境准备

4.3.节点配置

4.3.1.master1

4.3.2.slave2

4.3.3.master2

4.3.4.slave1

4.4.启动

4.5.测试


1.下载安装

前置条件:

JDK环境

下载地址:

下载 | RocketMQ

博主下载的是4.7.1版本。source是源码,Binary是可运行程序。

2.配置

server和broker的启动脚本里,给JVM的内存都是几个G,如果机器扛不住,可以修改一下:

runserver.sh,博主改为了:

 runbroker.sh,博主改为了:

3.测试

在config/broker.config中添加如下配置:

autoCreateTopicEnable=true
#aclEnable=true

启动name server:

nohup bin/mqnamesrv &

启动broker:

nohup bin/mqbroker -c conf/broker.conf &

RocketMQ安装目录下自带一个测试demo,运行后会自动向MQ中插入一千条数据: 首先配置一下环境变量

export NAMESRV_ADDR='localhost:9876'

如果脚本执行失败记得关一下防火墙试试。

然后运行脚本:

 bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

4.集群配置

4.1.规划

这里以搭建一个两节点,两主两备的集群为例,展示rocketMq的集群搭建。

集群规划:

ipnameserverbroker
192.1688.31.10nameserverbroker-a、broker-b-s
192.1688.31.20nameserverbroker-b、broker-a-s

备注:broker-a-s即broker-a的备份,broker-b-s即broker-b的备份。

4.2.环境准备

在/config目录下会有配置模板,其中提供了两主两从这种模式的配置模板,async表示主从之间是进行异步复制,sync表示主从之间是进行同步复制。这里博主用的是异步复制的模式。

所有节点上先增加hostname便于DNS解析:

vim /etc/hosts

#nameserver
192.168.31.10 rocketmq-nameserver1
192.168.31.20 rocketmq-nameserver2
#broker
192.168.31.10 rocketmq-master1
192.168.31.10 rocketmq-slave2
192.168.31.20 rocketmq-master2
192.168.31.20 rocketmq-slave1

配置后重启网卡:

systemctl restart network

关闭防火墙:

 # 关闭防火墙
 systemctl stop firewalld.service 
 # 查看防火墙的状态
 firewall-cmd --state 
 # 禁止firewall开机启动
 systemctl disable firewalld.service

创建好需要的目录:

mkdir /usr/local/rocketmq

mkdir /usr/local/rocketmq/store
mkdir /usr/local/rocketmq/store/commitlog
mkdir /usr/local/rocketmq/store/consumequeue
mkdir /usr/local/rocketmq/store/index
 
mkdir /usr/local/rocketmq/store-1
mkdir /usr/local/rocketmq/store-1/commitlog
mkdir /usr/local/rocketmq/store-1/consumequeue
mkdir /usr/local/rocketmq/store-1/index
 
mkdir /usr/local/rocketmq/store-2
mkdir /usr/local/rocketmq/store-2/commitlog
mkdir /usr/local/rocketmq/store-2/consumequeue
mkdir /usr/local/rocketmq/store-2/index
 
mkdir /usr/local/rocketmq/store-3
mkdir /usr/local/rocketmq/store-3/commitlog
mkdir /usr/local/rocketmq/store-3/consumequeue
mkdir /usr/local/rocketmq/store-3/index

4.3.节点配置

4.3.1.master1

配置broker-a.properties:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

4.3.2.slave2

配置broker-b-s.properties:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store-1
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store-1/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store-1/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store-1/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store-1/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store-1/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

4.3.3.master2

配置broker-b.properties:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store-2
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store-2/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store-2/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store-2/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store-2/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store-2/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

4.3.4.slave1

配置broker-a-s.properties:

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store-3
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/store-3/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store-3/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store-3/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/store-3/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/store-3/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
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

4.4.启动

两个节点先分别启动name server:

nohup rocketmq的bin目录所在的全路径/mqnamesrv &

然后两个节点分别用不同的配置文件启动两个broker:

nohup ocketmq的bin目录所在的全路径/mqbroker -c rocketmq的bin目录所在的全路径/2m-2s-async/xxx.properties &

启动后用jps查看一下,应该有一个name server、两个broker进程。

4.5.测试

bin目录下会有管理控制台命令mqadmin,用来查看mq的相关消息,用一下命令查看集群情况:

bin/mqadmin clusterList -n rocketmq-nameserver1:9876;rocketmq-nameserver2:9876

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/18247.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Docker和Kubernetes中使用代理IP?

Docker和Kubernetes是目前非常流行的容器化技术,这些技术被广泛用于开发、部署和管理应用程序。在某些情况下,需要使用代理IP来访问特定的网络资源。本文将介绍如何在Docker和Kubernetes中使用代理IP,并提供详细的举例说明。 一、在Docker中使…

excel 复制出来的数据内容自动带上空格

在excel中批量处理完了公式,想复制到navicat 或者文本编辑框里,发现都会自动带上双引号,但是excel 里是没有,查找了半天。 在excel里的文本如下所示 拷贝出来的结果如下所示: 经过检查发现原文中只要带有回车或者换行…

目标检测常用的评价指标

目标检测常用的评价指标 1 IoU(Intersection over Union)2 GIoU(Generalized IoU)3 DIoU(Distance-IoU)4 CIoU(Complete-IoU)5 EIoU(Efficient-IoU)6 SIoU7 W…

微服务网关SpringCloudGateway实战

目录 微服务网关SpringCloudGateway 1.概述 2.核心概念 快速入门 1.微服务开发 2.网关配置创建一个Gateway服务,引入以下依赖: 微服务网关SpringCloudGateway 1.概述 Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project R…

一种简单的数据库性能测试方法

这两天接到一个任务,要测试一个服务器的性能,客户要求向数据库内 1000/s(每插入一千条数据) 的处理能力,当时脑子赌赛了,想的是用LR来进行,由于LR接触不深,只知道LR实现参数化的时候…

巧用word 邮件合并批量输出报告

在实际调查中,往往遇到很多统计信息要单独生成调查报告。word 邮件合并就能很好的帮助我们快速实现批量产出报告。 具体案例如下: 目前入河排污口调查正在如火如荼开展,我们排查收集了大量信息,整理为表格。 要将这些表格输出为…

Kubernetes中Pod的调度策略

Kubernetes中Pod的调度策略 1、Pod调度 在 Kubernetes 平台上,我们很少会直接创建一个 Pod,在大多数情况下会通过 RC、Deployment、 DaemonSet、Job 等控制器完成对一组 Pod 副本的创建、调度及全生命周期的自动控制任务。 在最早的 Kubernetes 版本…

idea 添加类库

打开项目中的独立环境文件夹,右键打开终端输入安装类库的命令: pip install requests pip3 install BeautifulSoup4 检查这里是否把类库加进来了,加进来就完成!

选择排序

选择排序 排序步骤(有n个数需要排序) 在一组序列中找到最大/小的元素,将其与序列的起始位置交换;此时可进一步缩小排序范围,将改序列的起始位置移出;寻找剩余范围序列中的最大/小值,与此时序列…

基于DETR的人脸伪装检测

基于DETR的人脸伪装检测 前言前提条件实验环境项目地址LinuxWindows DETR训练自己的数据集修改models/detr.py中的参数进行训练进行预测 相关资源免费获取参考 前言 本文是个人使用DETR训练自己的COCO格式数据集的应用案例,由于水平有限,难免出现错漏&am…

ROCKSDB原理

按照读写的性质来分 分为读少写多和 写少读多 RocksDB适用于第一种。 磁盘中的数据结构 就地写和追加写 找到某一个页 然后将数据刷入到这一个页中. 这就导致了一个问题 就是追加写入的数据冗余 由于存在数据冗余 所以必须要对数据进行一定的处理才能保持查找性能 数据以块…

flutter开发实战-日志logger写入文件及print

flutter开发实战-日志logger写入文件及print 在开发中,需要日志logger写入文件,方便日后查看出现的问题。这里记录之前的实现方案。 使用的日志插件是logger 一、引入日志插件 在工程中pubspec.yaml引入logger logger: ^1.4.0二、代码实现 使用比较…