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

目录

前置要求:

一、下载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文件,添加配置:

Linux环境下安装RocketMQ(单机、集群)_第1张图片

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

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

四、查看rocketmq的目录结构 

五、启动

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

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

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

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

首先修改nameserver的内存:

Linux环境下安装RocketMQ(单机、集群)_第2张图片

Linux环境下安装RocketMQ(单机、集群)_第3张图片

然后修改broker的内存:

Linux环境下安装RocketMQ(单机、集群)_第4张图片

5.1 启动nameserver

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

Linux环境下安装RocketMQ(单机、集群)_第5张图片

5.2 启动broker

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

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

Linux环境下安装RocketMQ(单机、集群)_第6张图片

启动broker

nohup ./mqbroker -n 192.168.17.160:9876 & 

六、测试发送消息

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

Linux环境下安装RocketMQ(单机、集群)_第7张图片

使⽤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

 Linux环境下安装RocketMQ(单机、集群)_第8张图片

 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之间的关系如下:

Linux环境下安装RocketMQ(单机、集群)_第9张图片

三台服务器都需要安装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 如果每台都显示成功则表示启动成功

Linux环境下安装RocketMQ(单机、集群)_第10张图片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⽂件。

Linux环境下安装RocketMQ(单机、集群)_第11张图片

# 所属集群名称
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⽂件。

Linux环境下安装RocketMQ(单机、集群)_第12张图片

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'

Linux环境下安装RocketMQ(单机、集群)_第13张图片

 启动生产者

./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

Linux环境下安装RocketMQ(单机、集群)_第14张图片

8.4.2 删除Topic:deleteTopic

Linux环境下安装RocketMQ(单机、集群)_第15张图片

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

Linux环境下安装RocketMQ(单机、集群)_第16张图片

8.4.4 删除订阅组配置:deleteSubGroup

Linux环境下安装RocketMQ(单机、集群)_第17张图片8.4.5  更新Broker 配置⽂件:updateBrokerConfig

Linux环境下安装RocketMQ(单机、集群)_第18张图片

8.4.6 查看Topic 列表信息:topicList

Linux环境下安装RocketMQ(单机、集群)_第19张图片

8.4.7 查看Topic 路由信息:topicRoute

Linux环境下安装RocketMQ(单机、集群)_第20张图片

8.4.8 查看Topic 统计信息:topicStats

Linux环境下安装RocketMQ(单机、集群)_第21张图片8.4.9 查看Broker 统计信息:brokerStats

Linux环境下安装RocketMQ(单机、集群)_第22张图片

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

Linux环境下安装RocketMQ(单机、集群)_第23张图片8.4.11 根据消息Key 查询消息:queryMsgByKey

Linux环境下安装RocketMQ(单机、集群)_第24张图片

8.4.12 根据Offset 查询消息:queryMsgByOffset

Linux环境下安装RocketMQ(单机、集群)_第25张图片

8.4.13 查询Producer 的⽹络连接:producerConnection

Linux环境下安装RocketMQ(单机、集群)_第26张图片

8.4.14 查询Consumer 的⽹络连接:consumerConnection

Linux环境下安装RocketMQ(单机、集群)_第27张图片

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

Linux环境下安装RocketMQ(单机、集群)_第28张图片

8.4.16 查看集群消息:clusterList

Linux环境下安装RocketMQ(单机、集群)_第29张图片8.4.17 添加(更新)KV 配置信息:updateKvConfig

Linux环境下安装RocketMQ(单机、集群)_第30张图片

8.4.18 删除KV 配置信息:deleteKvConfig

Linux环境下安装RocketMQ(单机、集群)_第31张图片8.4.19 添加(更新)Project group 配置信息:updateProjectGroup

Linux环境下安装RocketMQ(单机、集群)_第32张图片

8.4.20 删除Project group 配置信息:deleteProjectGroup

Linux环境下安装RocketMQ(单机、集群)_第33张图片

8.4.21 取得Project group 配置信息:getProjectGroup

Linux环境下安装RocketMQ(单机、集群)_第34张图片8.4.22 设置消费进度:resetOffsetByTime

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

Linux环境下安装RocketMQ(单机、集群)_第35张图片

8.4.23 清除特定Broker权限:wipeWritePerm

Linux环境下安装RocketMQ(单机、集群)_第36张图片

8.4.24 获取Consumer消费进度:getConsumerStatus

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

Linux环境下安装RocketMQ(单机、集群)_第37张图片

以上列举了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的地址填上去,如下图所示

Linux环境下安装RocketMQ(单机、集群)_第38张图片

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

Linux环境下安装RocketMQ(单机、集群)_第39张图片

 然后运行该jar包

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

Linux环境下安装RocketMQ(单机、集群)_第40张图片

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

Linux环境下安装RocketMQ(单机、集群)_第41张图片

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

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

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

Linux环境下安装RocketMQ(单机、集群)_第42张图片

Linux环境下安装RocketMQ(单机、集群)_第43张图片 rocketmq的单机部署和集群部署就讲到这里了。感谢你的耐心观看~

你可能感兴趣的:(编程环境安装,java-rocketmq,rocketmq,java)