Linux环境下安装RocketMQ(单机、集群)

news2025/2/24 3:35:00

目录

前置要求:

一、下载RocketMQ

二、上传解压

三、配置rocketmq的环境变量

四、查看rocketmq的目录结构 

五、启动

5.1 启动nameserver

5.2 启动broker

六、测试发送消息

七、关闭

八、RocketMQ集群搭建

8.1 RocketMQ集群模式介绍

8.2 搭建

8.2.1 准备三台服务器

8.2.2 启动三台nameserver

 8.2.3 配置broker

8.2.4 启动broker

 8.3 验证集群

8.4 mqadmin管理⼯具

8.4.1 创建topic:updateTopic

8.4.2 删除Topic:deleteTopic

8.4.3 创建(修订)订阅组:updateSubGroup

8.4.4 删除订阅组配置:deleteSubGroup

​8.4.5  更新Broker 配置⽂件:updateBrokerConfig

8.4.6 查看Topic 列表信息:topicList

8.4.7 查看Topic 路由信息:topicRoute

8.4.8 查看Topic 统计信息:topicStats

8.4.9 查看Broker 统计信息:brokerStats

8.4.10 根据消息ID 查询消息:queryMsgById

8.4.11 根据消息Key 查询消息:queryMsgByKey

8.4.12 根据Offset 查询消息:queryMsgByOffset

8.4.13 查询Producer 的⽹络连接:producerConnection

8.4.14 查询Consumer 的⽹络连接:consumerConnection

8.4.15 查看订阅组消费状态:consumerProgress

8.4.16 查看集群消息:clusterList

8.4.17 添加(更新)KV 配置信息:updateKvConfig

8.4.18 删除KV 配置信息:deleteKvConfig

8.4.19 添加(更新)Project group 配置信息:updateProjectGroup

8.4.20 删除Project group 配置信息:deleteProjectGroup

8.4.21 取得Project group 配置信息:getProjectGroup

​8.4.22 设置消费进度:resetOffsetByTime

8.4.23 清除特定Broker权限:wipeWritePerm

8.4.24 获取Consumer消费进度:getConsumerStatus

8.5 安装可视化管理控制平台


前置要求:

  1. 准备一台Linux系统的虚拟机
  2. 提前安装jdk1.8

不会的可以去网上找教程,也可以看我写的这两篇文章:

安装VMware虚拟机、Linux系统(CentOS7)_何苏三月的博客-CSDN博客

Linux环境下安装JDK1.8_何苏三月的博客-CSDN博客

一、下载RocketMQ

官网下载地址:

​​​​​​https://rocketmq.apache.org/download

这里,我选择的版本是4.7.1。你也可以选择其他版本。

二、上传解压

下载完成后,我们上传安装的压缩包到虚拟机上。

开始解压,由于是zip格式的压缩包,所以得输入如下命令解压

unzip -d /opt/software/rocketmq/ rocketmq-all-4.7.1-bin-release.zip

-d 用来指定解压路径。

ok,解压完成。你可以选择删除掉刚才的压缩包了。

其实,你在window下使用也是ok的,而且它的bin目录下也带有window的可执行命令。

三、配置rocketmq的环境变量

jdk我们需要配置环境变量,同样rocketmq也需要!

我们进入/etc/profile文件,添加配置:

 让环境变量生效,执行source /etc/profile

ok,到这里安装就搞定了。

四、查看rocketmq的目录结构 

五、启动

首先要启动NameServer,它是服务注册中心,相当于zookeeper,nacos。

然后启动Borker。启动Borker的时候,我们先不启动集群,使用单机版启动即可。

当然了,rocketmq正常使用都是集群模式。

ps:如果你的虚拟机内存很小,或者可使用的内存不多了。我们可以修改一下rocketmq的内存。

首先修改nameserver的内存:

然后修改broker的内存:

5.1 启动nameserver

nohup ./mqnamesrv -n 192.168.17.160:9876 &
  • -n 192.168.17.160:9876 & 表示这个nameserver是可以通过这个ip端口访问到的。

5.2 启动broker

启动之前,在 conf/broker.conf ⽂件中加⼊如下配置,开启⾃动创建Topic功能。

这是为了方便我们后面测试发送消息演示。它会自动创建一个topic,不用我们自己创建了。

启动broker

nohup ./mqbroker -n 192.168.17.160:9876 & 

六、测试发送消息

首先配置一下nameserver的环境变量

使⽤bin/tools.sh⼯具验证消息的发送,默认会发1000条消息

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

使⽤bin/tools.sh⼯具验证消息的接收

./tools.sh org.apache.rocketmq.example.quickstart.Consumer 

七、关闭

./mqshutdown broker
./mqshutdown namesrv

 

 ok,至此单机版本的rocketmq就安装完成了。

当然为了高可用,我们都会使用集群版,这个后面有时间也会再补充~

八、RocketMQ集群搭建

8.1 RocketMQ集群模式介绍

为了追求更好的性能,RocketMQ的最佳实践方式都是在集群模式下完成。

RocketMQ官方提供了三种集群搭建方式:

2主2从异步通信方式

使用异步方式进行主从之间的数据复制,吞吐量大,但可能会丢消息。

使用 conf/2m-2s-async 文件夹内的配置文件做集群配置。

2主2从同步通信方式

使用同步方式进行主从之间的数据复制,保证消息安全投递,不会丢失,但影响吞吐量

使用 conf/2m-2s-sync 文件夹内的配置⽂件做集群配置。

2主无从方式

会存在单点故障,且读的性能没有前两种方式好。

使用 conf/2m-noslave 文件夹内的配置文件做集群配置。

        上述三种官方提供的集群没办法实现高可用,即在master节点挂掉后,slave节点没办法自动被选举为新的master,而需要人工实现。RocketMQ在4.5版本之后引入了第三方的Dleger高可用集群。

8.2 搭建

8.2.1 准备三台服务器

三台Linux服务器中nameserver和broker之间的关系如下:

三台服务器都需要安装jdk和rocketmq,安装步骤参考上⼀章节。

我们现在有一台了,所以可以直接克隆两台~

不会克隆的可以参考这篇文章:克隆Linux系统(centos)_何苏三月的博客-CSDN博客

8.2.2 启动三台nameserver

nameserver是⼀个轻量级的注册中心,broker把自己的信息注册到nameserver上。

而且,nameserver是无状态的,直接启动即可。三台nameserver之间不需要通信,而是被请求方来关联三台nameserver的地址。

修改三台服务器的的runserver.sh⽂件

修改JVM内存默认的4g为512m。

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -
XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

在每台服务器的bin⽬录下执⾏如下命令

服务器1

nohup ./mqnamesrv -n 192.168.17.100:9876 & 

服务器2

nohup ./mqnamesrv -n 192.168.17.101:9876 & 

 服务器3

nohup ./mqnamesrv -n 192.168.17.102:9876 & 

启动之后,通过cat nohup.out 如果每台都显示成功则表示启动成功

ps:这三台nameserver是无状态,互相间没有关联,各自启动各自的,互相间不需要通信。

 8.2.3 配置broker

broker-a,broker-b-s这两台broker是配置在服务器2上,broker-b,broker-a-s这两台broker是配置在服务器3上。这两对主从节点在不同的服务器上,服务器1上没有部署broker。

需要修改每台broker的配置⽂件。注意,同⼀台服务器上的两个broker保存路径不能⼀样。

broker-a的master节点

在服务器2上,进⼊到conf/2m-2s-async⽂件夹内,修改broker-a.properties⽂件。

# 所属集群名称
brokerClusterName=DefaultCluster
# broker名字
brokerName=broker-a
# broker所在服务器的ip
brokerIP1=192.168.17.101
# broker的id,0表示master,>0表示slave
brokerId=0
# 删除⽂件时间点,默认在凌晨4点
deleteWhen=04
# ⽂件保留时间为48⼩时
fileReservedTime=48
# broker的⻆⾊为master
brokerRole=ASYNC_MASTER
# 使⽤异步刷盘的⽅式
flushDiskType=ASYNC_FLUSH
# 名称服务器的地址列表
namesrvAddr=192.168.17.100:9876;192.168.17.101:9876;192.168.17.102
:9876
# 在发送消息⾃动创建不存在的topic时,默认创建的队列数为4个
defaultTopicQueueNums=4
# 是否允许 Broker ⾃动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许 Broker ⾃动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# broker对外服务的监听端⼝
listenPort=10911
# abort⽂件存储路径
abortFile=/usr/local/rocketmq/store/abort
# 消息存储路径
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
# 限制的消息⼤⼩
maxMessageSize=65536
# commitLog每个⽂件的⼤⼩默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每个⽂件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

broker-a的slave节点

在服务器3上,进⼊到conf/2m-2s-async⽂件夹内,修改broker-a-s.properties⽂件。

brokerClusterName=DefaultCluster
brokerName=broker-a
brokerIP1=192.168.17.102
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.17.100:9876;192.168.17.101:9876;192.168.17.102:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=11011
abortFile=/usr/local/rocketmq/store-slave/abort
storePathRootDir=/usr/local/rocketmq/store-slave
storePathCommitLog=/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store-slave/consumequeue
storePathIndex=/usr/local/rocketmq/store-slave/index
storeCheckpoint=/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize=65536

broker-b的master节点

在服务器3上,进⼊到conf/2m-2s-async⽂件夹内,修改broker-b.properties⽂件。

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerIP1=192.168.17.102
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.17.100:9876;192.168.17.101:9876;192.168.17.102:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=10911
abortFile=/usr/local/rocketmq/store/abort
storePathRootDir=/usr/local/rocketmq/store
storePathCommitLog=/usr/local/rocketmq/store/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
storePathIndex=/usr/local/rocketmq/store/index
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
maxMessageSize=65536

 broker-b的slave节点

在服务器2上,进⼊到conf/2m-2s-async⽂件夹内,修改broker-b-s.properties⽂件。

brokerClusterName=DefaultCluster
brokerName=broker-b
brokerIP1=192.168.17.101
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
namesrvAddr=192.168.17.100:9876;192.168.17.101:9876;192.168.17.102:9876
defaultTopicQueueNums=4
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
listenPort=11011
abortFile=/usr/local/rocketmq/store-slave/abort
storePathRootDir=/usr/local/rocketmq/store-slave
storePathCommitLog=/usr/local/rocketmq/store-slave/commitlog
storePathConsumeQueue=/usr/local/rocketmq/store-slave/consumequeue
storePathIndex=/usr/local/rocketmq/store-slave/index
storeCheckpoint=/usr/local/rocketmq/store-slave/checkpoint
maxMessageSize=65536

 修改服务器2和服务器3的runbroker.sh文件

修改JVM内存默认的8g为512m。

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m" 

8.2.4 启动broker

在服务器2中启动broker-a(master)和broker-b-s(slave)

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

 在服务器3中启动broker-b(master),broker-a-s(slave)

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

 8.3 验证集群

使用RocketMQ提供的tools工具验证集群是否正常工作。

在服务器2上配置环境变量用于被tools中的生产者和消费者程序读取该变量。

export NAMESRV_ADDR='192.168.241.100:9876;192.168.241.101:9876;192.168.241.102:9876'

 启动生产者

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

8.4 mqadmin管理⼯具

RocketMQ提供了命令工具用于管理topic、broker、集群、消息等。比如可以使用mqadmin创建topic:

./mqadmin updateTopic -n 192.168.17.101:9876 -c DefaultCluster -t myTopic1

下面提供了mqadmin工具的各种命令。

8.4.1 创建topic:updateTopic

8.4.2 删除Topic:deleteTopic

8.4.3 创建(修订)订阅组:updateSubGroup

8.4.4 删除订阅组配置:deleteSubGroup

8.4.5  更新Broker 配置⽂件:updateBrokerConfig

8.4.6 查看Topic 列表信息:topicList

8.4.7 查看Topic 路由信息:topicRoute

8.4.8 查看Topic 统计信息:topicStats

8.4.9 查看Broker 统计信息:brokerStats

8.4.10 根据消息ID 查询消息:queryMsgById

8.4.11 根据消息Key 查询消息:queryMsgByKey

8.4.12 根据Offset 查询消息:queryMsgByOffset

8.4.13 查询Producer 的⽹络连接:producerConnection

8.4.14 查询Consumer 的⽹络连接:consumerConnection

8.4.15 查看订阅组消费状态:consumerProgress

8.4.16 查看集群消息:clusterList

8.4.17 添加(更新)KV 配置信息:updateKvConfig

8.4.18 删除KV 配置信息:deleteKvConfig

8.4.19 添加(更新)Project group 配置信息:updateProjectGroup

8.4.20 删除Project group 配置信息:deleteProjectGroup

8.4.21 取得Project group 配置信息:getProjectGroup

8.4.22 设置消费进度:resetOffsetByTime

根据时间来设置消费进度,设置之前要关闭这个订阅组的所有consumer,设置完再启动,方可生效。

8.4.23 清除特定Broker权限:wipeWritePerm

8.4.24 获取Consumer消费进度:getConsumerStatus

该命令只打印当前与cluster 连接的consumer 的消费进度

以上列举了mqadmin的常见的一些命令,有需要的可以对照着使用。

这里再举例说明,比如我想查看一下mq的集群。

8.5 安装可视化管理控制平台

通过上面提供的mqadmin工具我们发现,记住这些命令还是蛮复杂的。操作起来不是很方便,那么有没有可视化界面供我们直接操作呢,答案是有的!

但是RocketMQ没有提供可视化管理控制平台,可以使用第三方管理控制平台:

https://github.com/apache/rocketmq-externals/tree/rocketmq-console-1.0.0/rocketmq-console

  • 下载管理控制平台
  • 解压缩在linux服务器上

可以安装在服务器1上

由于下载下来的是一个springboot项目,所以我们需要先修改一下它里面的设置,然后打成jar包再发送到服务器上去。

先用idea打开该项目,然后修改application.properties文件。

将nameserver的地址填上去,如下图所示

  然后我们用maven把它达成jar包,并上传到服务器1上,当然这个你上传到哪台都行

 然后运行该jar包

java -jar rocketmq-console-ng-1.0.0.jar

测试一下,发现没有数据!

出现这种问题的原因可能是防火墙打开了。

请确保nameserver和broker的端口5777/10911(默认)能够被访问。如果防火墙挡住了请求,您将无法查看集群的任何信息。

我们可以检查一下防火墙,然后将每台服务器防火墙都关闭,再看看。就ok了。

 rocketmq的单机部署和集群部署就讲到这里了。感谢你的耐心观看~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海康机器视觉Visionmaster-VM3D常见问题及解决方法

软件及环境问题 第一个问题:软件获取问题 官网获取 第二个问题:环境配置类问题 1.软件打不开,加密狗灯不亮,6报错:加密狗未检测到或异常。解决方法:安装3DVM的驱动。 安装后加密狗无法识别&#xff0c…

SLAM论文速递:SLAM—— MID-Fusion:基于八叉树的对象级多实例动态SLAM—4.26(1)

论文信息 题目: MID-Fusion:Octree-based Object-Level Multi-Instance Dynamic SLAMMID-Fusion:基于八叉树的对象级多实例动态SLAM 论文地址: https://ieeexplore.ieee.org/abstract/document/8794371发表期刊: 2019 International Conf…

LVS-NAT模式

什么是群集? 多台主机组成的一个整体,提供一个ip访问通道,所有的主机干一件事 提供同样的服务。 群集有哪些类型? ①负载均衡群集(LB): 提高系统的响应能力,处理更多的访问请求&am…

Linux进程(1)

目录 ⛹🏽进程简介⛹🏽查看进程⛹🏽系统调用🚴🏽获取进程标示符🚴🏽创建进程 ⛹🏽进程状态🚴🏽孤儿进程:🚴🏽进程优先级 ⛹…

一次使用netcat的经验记录

1.netcat安装 参考:https://my.oschina.net/u/3530967/blog/1560985 2.netcat使用 参考:https://zhuanlan.zhihu.com/p/83959309 3.创建udp服务 (1)使用:nc -l -u -p 8810 创建udp服务端监听8810端口 在另一台机…

基于信度感知的半监督医学图像分类对比自集成

文章目录 Reliability-Aware Contrastive Self-ensembling for Semi-supervised Medical Image Classification摘要本文方法Reliability-Aware Contrastive Mean TeacherWeight FunctionReliability-Aware Consistency LossReliability-Aware Contrastive LossObjective Functi…

windows 安装mysql5.7

确认是否安装了mysql winr 输入services.msc , 找mysql 下载 链接:https://pan.baidu.com/s/1zPuvzjWovky3MrpNlIt9uw 提取码:y52i 安装 https://blog.csdn.net/u012318074/article/details/124042756 家目录下新建配置文件 my.ini 注意路径中 // &a…

企业进行数字化转型的优劣势分别有哪些?

数字化转型是指将数字技术融入企业的方方面面,从而导致企业运营方式和为客户创造价值的方式发生根本性变化。企业数字化转型既有优势也有劣势,概述如下: 优点: 提高效率和生产力:数字化转型使企业能够自动化和简化业…

Session服务端会话追踪

1. Session基本使用 将数据(cookie)保存在客户端不安全,因为客户端在不停的进行着网络传输,所以把数据存储在服务端。 存储的对象就是session,例如AServlet往session中存数据,BServlet往session中读数据。 …

纯 CSS 实现几个 Loading 效果

1. 平滑加载 <div class"progress-1"></div>.progress-1 {width:120px;height:20px;background:linear-gradient(#000 0 0) 0/0% no-repeat#ddd;animation:p1 2s infinite linear; } keyframes p1 {100% {background-size:100%} }linear-gradient(#000 0…

11.java程序员必知必会类库之word处理库

前言 正常业务中&#xff0c;可能涉及到和合作方签约电子合同&#xff0c;此时&#xff0c;我们需要先设计合同模板&#xff0c;维护固定内容&#xff0c;将可变的内容通过占位符替代&#xff0c;等签章的时候&#xff0c;生成pdf,然后可以根据设计的合同章的坐标&#xff0c;…

家庭私人影院 - Windows搭建Emby媒体库服务器并远程访问 「无公网IP」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

第十章_Redis集群(cluster)

是什么 定义 由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集的一部分&#xff0c;这就是Redis的集群&#xff0c;其作用是提供在多个Redis节点间共享数据的程序集。 官…

cad怎么转换成pdf格式,3个方法快速搞定

cad怎么转换成pdf格式&#xff1f;首先我们来了解一下CAD是什么。CAD是一种计算机辅助设计软件&#xff0c;其文件格式为DWG&#xff08;Drawing&#xff09;和DXF&#xff08;Drawing Exchange Format&#xff09;。DWG是CAD程序的本地文件格式&#xff0c;用于存储2D和3D图形…

【LLM】LLaMA简介:一个650亿参数的基础大型语言模型

LLaMA简介&#xff1a;一个650亿参数的基础大型语言模型 PaperSetup其他资料 作为 Meta 对开放科学承诺的一部分&#xff0c;今天我们将公开发布 LLaMA (大型语言模型 Meta AI) &#xff0c;这是一个最先进的大型语言基础模型&#xff0c;旨在帮助研究人员推进他们在人工智能这…

刘宇:如何打造快、稳、易、专的多元数据库运行平台

导语 4月8日下午&#xff0c;为期两天的第十二届数据技术嘉年华&#xff08;DTC 2023&#xff09;在北京新云南皇冠假日酒店圆满落下帷幕。大会以“开源融合数字化——引领数据技术发展&#xff0c;释放数据要素价值”为主题&#xff0c;汇聚产学研各界精英到场交流。云和恩墨作…

直面GPT-4的缺陷和风险,OpenAI提出多种安全应对措施

深入研究OpenAI官方团队发布的长达99页的技术报告&#xff0c;我们发现在GPT-4光鲜亮丽功能的背后&#xff0c;还隐藏了OpenAI团队付出的的汗水和努力&#xff0c;尤其是在缓解GPT模型自身缺陷和模型安全落地方面。 报告链接&#xff1a; https://arxiv.org/abs/2303.08774 一、…

UEditorPlus v3.0.0 样式CSS变量,支持Mind代码类型,若干问题修复

UEditor是由百度开发的所见即所得的开源富文本编辑器&#xff0c;基于MIT开源协议&#xff0c;该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器&#xff0c;主要做了样式的定制&#xff0c;更符…

kafka单节点快速搭建

1.搭建使用centos7主机&#xff0c;关闭防火墙和selinux服务 2.创建kafka存放目录 mkdir /etc/kafka 3.从kafka官网下载安装包 我这里下载了3.3.1版本的kafka&#xff0c;放到kafka目录中 下载地址&#xff1a;Apache Kafka 4.解压安装包并更改名称 tar -zxvf /etc/kaf…

Three.js教程:顶点索引复用顶点数据

推荐&#xff1a;将 NSDT场景编辑器 加入你3D工具链 其他工具系列&#xff1a; NSDT简石数字孪生 顶点索引复用顶点数据 通过几何体BufferGeometry的顶点索引属性BufferGeometry.index可以设置几何体顶点索引数据&#xff0c;如果你有WebGL基础很容易理解顶点索引的概念&#…