1、RocketMQ消息队列基础概念

NameServer: 提供轻量级的服务发现和路由。 每个 NameServer 记录完整的路由信息,提供等效的读写服务,并支持快速存储扩展。

Broker: 通过提供轻量级的 Topic 和 Queue 机制来处理消息存储,同时支持推(push)和拉(pull)模式以及主从结构的容错机制。

Producer:生产者,产生消息的实例,拥有相同 Producer Group 的 Producer 组成一个集群。

Consumer:消费者,接收消息进行消费的实例,拥有相同 Consumer Group 的 Consumer 组成一个集群。

每个 Broker 与 NameServer 集群中的所有节 点建立长连接,定时注册 Topic 信息到所有 NameServer 中。

Producer 与 NameServer 集群中的其中一个节点(随机选择)建立长连接,定期从 NameServer 获取 Topic 路由信息,并向提供 Topic 服务的 Broker Master 建立长连接,且定时向 Broker 发送心跳。

Producer 只能将消息发送到 Broker master,但是 Consumer 则不一样,它同时和提供 Topic 服务的 Master 和 Slave 建立长连接,既可以从 Broker Master 订阅消息,也可以从 Broker Slave 订阅消息。

2、2主2从集群搭建

1)集群架构图

2)搭建步骤

基础环境:

两台虚拟机(192.168.2.160,192.168.2.170)内存均是3GB,JDK1.8+;

192.168.2.160机器搭建nameserver及broker-a的主从节点,192.168.2.170机器搭建nameserver及broker-b的主从节点;

rocketmq-console-ng-2.0.0.jar包(rocketmq监控台网站)。

1、下载apache-rocketmq-4.8.0版本(当前最新版),解压至rocketmq-4.8.0中。

2、进入rocketmq-4.8.0文件夹,修改conf/2m-2s-sync文件夹中的配置文件。

broker-a.properties文件内容如下:

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.# 所属集群名称
brokerClusterName=rocketmq-cluster
# 名称可重复 为了便于管理,master和所属的slave采用同一个名称
brokerName=broker-a
# 0 - master | >0 - slave
brokerId=0
# nameServer 服务地址列表
namesrvAddr=192.168.2.160:9876;192.168.2.170:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口,
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000#存储路径
storePathRootDir=/home/gaochao/rocketmq-4.8.0/data/store/broker
#commitLog 存储路径
storePathCommitLog=/home/gaochao/rocketmq-4.8.0/data/store/broker/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/gaochao/rocketmq-4.8.0/data/store/broker/consumequeue
#消息索引存储路径
storePathIndex=/home/gaochao/rocketmq-4.8.0/data/store/broker/index
#checkpoint 文件存储路径
storeCheckpoint=/home/gaochao/rocketmq-4.8.0/data/store/broker/checkpoint
#abort 文件存储路径
abortFile=/home/gaochao/rocketmq-4.8.0/data/store/broker/abort#限制的消息大小
maxMessageSize=65536
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128

broker-a-s.properties文件内容如下:

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.# 所属集群名称
brokerClusterName=rocketmq-cluster
# 名称可重复 为了便于管理,master和所属的slave采用同一个名称
brokerName=broker-a
# 0 - master | >0 - slave
brokerId=1
# nameServer 服务地址列表
namesrvAddr=192.168.2.160:9876;192.168.2.170:9876
# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#Broker 对外服务的监听端口,
listenPort=10950
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000#存储路径
storePathRootDir=/home/gaochao/rocketmq-4.8.0/data/store/broker-s
#commitLog 存储路径
storePathCommitLog=/home/gaochao/rocketmq-4.8.0/data/store/broker-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/home/gaochao/rocketmq-4.8.0/data/store/broker-s/consumequeue
#消息索引存储路径
storePathIndex=/home/gaochao/rocketmq-4.8.0/data/store/broker-s/index
#checkpoint 文件存储路径
storeCheckpoint=/home/gaochao/rocketmq-4.8.0/data/store/broker-s/checkpoint
#abort 文件存储路径
abortFile=/home/gaochao/rocketmq-4.8.0/data/store/broker-s/abort#限制的消息大小
maxMessageSize=65536
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#发消息线程池数量
sendMessageThreadPoolNums=128
#拉消息线程池数量
pullMessageThreadPoolNums=128

broker-b.properties与broker-b-s.properties文件的修改可参考如上两配置文件的修改,集群名称不变,机器节点名称注意变化。

3、在上述两节点机器上分别执行如下命令,指定消息队列等数据的存储路径,如果不指定,则默认路径为当前用户的home路径(会自动创建store与log文件夹)

##需要注意的是 存储路径 storeCheckpoint ,abortFile 不需要创建文件夹,会自动创建checkpoint 文件 和 abort 文件,但是需要创建 commitlog ,consumequeue,index 文件夹
mkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/commitlog
mkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/consumequeue
mkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/indexmkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/commitlog
mkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/consumequeue
mkdir -p /home/gaochao/rocketmq-4.8.0/data/store/broker/index

4、根据实际情况修改namesrv与broker启动需要的jvm内存(默认值较大)

bin路径下runbroker.sh,runserver.sh配置可调整如下:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

5、在两个机器节点上先启动namesrv服务,然后启动broker服务(以broker节点为例)

cd /home/gaochao/rocketmq-4.8.0/bin
nohup sh mqnamesrv &
nohup sh mqbroker -c ../conf/2m-2s-sync/broker-a.properties &
nohup sh mqbroker -c ../conf/2m-2s-sync/broker-a-s.properties &

6、选择其中一节点,如broker-b节点,启动rocketmq监视台(端口默认8080)

java -jar rocketmq-console-ng-2.0.0.jar --rocketmq.config.namesrvAddr='localhost:9876' --server.port=18888 &

效果如下图所示:

至此RocketMQ集群(2主2从)搭建成功!

参考文档:

https://longhujing.github.io/2020/12/24/d9a0e3ef#RocketMQ-Console%E5%AE%89%E8%A3%85

https://cloud.tencent.com/developer/article/1412653

RocketMQ集群(2主2从)搭建详细步骤相关推荐

  1. Rocketmq集群搭建

    Rocketmq集群搭建 拓扑 主机名 网卡名 IP 作用 mq-master01 ens33 192.168.162.10 broker-a mq-master02 ens33 192.168.16 ...

  2. 【有料】4 种高可用 RocketMQ 集群搭建方案!

    背景 笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能. 随着产品迭代,业务功能越来越多后慢慢也要面对高并发.业务解耦.分布式事务等问题,所 ...

  3. RocketMQ集群(版本4.7.1)搭建教程

    快速搭建RocketMQ集群 前言:最近在学习了解RocketMQ,为了更好地对照了解,需要安装一套RocketMQ集群,自己实际上手操作一番.首先在google搜索一番,找了一篇教程,看了下,比较详 ...

  4. 双RocketMq集群的搭建

    一.双Master RocketMq集群的搭建 1.服务器环境: 序号 IP 用户名 角色 模式 1 192.168.211.128 root nameServer1,brokerServer1 Ma ...

  5. mysql数据库集群 主主复制 原理_MySql搭建集群 之 主主复制(双主代从)MYSQL数据库...

    作者:VEPHP   时间 2017-09-27 <MySql搭建集群 之 主主复制(双主代从)MYSQL数据库>要点: 本文介绍了MySql搭建集群 之 主主复制(双主代从)MYSQL数 ...

  6. 「从零单排canal 02」canal集群版 + admin控制台 最新搭建姿势(基于1.1.4版本)

    canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据 订阅 和 消费.应该是阿里云DTS(Data Transfer Service)的开 ...

  7. RocketMQ 集群性能摸高

    前言 我们在生产环境搭建一个集群时,需要对该集群的性能进行摸高.即:集群的最大 TPS 大约多少,我们做到心里有数.通常我们日常的实际流量控制在压测最高值的 1/3 到 1/2 左右,预留一倍到两倍的 ...

  8. RocketMQ集群部署方案(DLedger)

    RocketMQ集群部署方案(DLedger) 一.基本配置 1.准备三台虚拟机,root密码 root ;IP地址: 192.168.xxx.xxx worker1 192.168.xxx.xxx ...

  9. Mysql8 group replication组复制集群单主多主模式切换

    Mysql8 MGR集群操作图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的操作. My ...

  10. Mysql 8 group replication组复制集群单主配置图解

    Mysql 8 MGR集群单主配置图解 声明与简介 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的MGR集群的配置. ...

最新文章

  1. 关于在WebForm页面使用Ajax
  2. python mysql索引 优化神器explain 慢查询
  3. cms php vue 开源_骑士CMS文件包含+getshell
  4. 中国电磁线行业供需状况与十四五竞争态势研究报告2022版
  5. 2005年度国产空间信息系统软件测评
  6. 台式计算机更新不了,台式机更新造成电脑关不了机怎么办
  7. 深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建
  8. ajax同步和异步提交的区别
  9. l2-029 特立独行的幸福 (25分)_霜降后盆栽幸福树,调整4个地方,不用再怕掉叶子了...
  10. Tomcat的三种会话保持
  11. 【算法】—— 不借助中间变量实现 swap
  12. px2rem-loader(Vue:移动端自适应,px自动转化)
  13. Jaspersoft 与springboot结合生成一维码,二维码
  14. redis统计用户日活量_【赵强老师】Redis案例分析:用setbit统计活跃用户
  15. 预科计算机考试试题,少数民族预科计算机应用基础课程机考试题库的
  16. python提取pdf表格数据 无边框_Python使用Tabula提取PDF表格数据
  17. 计算机应用技术的代码081401,学科、专业名称(代码).doc
  18. 远程桌面连接方式造成键盘鼠标失效(UI自动化)
  19. 神经系统的组成结构图谱,神经系统的基本结构图
  20. cannot find -lGL问题的解决方法

热门文章

  1. 如何修改植物大战僵尸文档
  2. 数论基本定理和欧拉广义降幂公式
  3. ibm tivoli_集成Tivoli Federated Identity Manager和Tivoli Identity Manager
  4. 华为云CDN,无忧畅享网络
  5. Spring Cloud Gateway 3.1.1基于redis实现动态路由和管理功能
  6. SpringCloud 微服务网关Gateway常用限流算法以及简单实现
  7. 我的世界java版怎么加整合包_我的世界java如何下载安装optifine和forge及整合包和常见问题[纯小白教程]...
  8. 国科大学习资料–模式识别--精练考点
  9. 读书笔记-大教堂与集市
  10. html5 在线视频编辑器,一种基于html5的多轨道视频编辑的方法及系统与流程