RocketMq-主从集群搭建

news2025/1/22 21:06:06

目录

1.服务器列表

2.下载安装包

3.node1节点修改runserver.sh文件

4. 所有节点安装jdk

5. node1节点配置RocketMQ集群

1.配置node1节点borker-a的master配置文件

2.配置node2节点配置borker-a的slave borker-a-s节点

3.配置node3节点配置borker-b的master节点

4.配置node4节点配置borker-b的slave节

6.将配置好的rocketmq打包拷贝到其他三台服务器

 7.打开防火墙端口

 8.启动nameser

 9.启动BrokerServer

1.node2 192.168.1.3

2.node2 192.168.1.9

3.node3 192.168.1.10

4.node4 192.168.1.11

10.在node1节点上安装控制台 

11.访问测试


1.服务器列表

nameip远程端口
node4 nameserver broker-b-s192.168.1.1122
node3 nameserver broker-b192.168.1.1022
node2 nameserver broker-a-s192.168.1.922
node1 nameserver broker-a192.168.1.322

2.下载安装包

# 版本4.9.4
链接:https://pan.baidu.com/s/15s6lasTfeMv1rUBrH34XPg 
提取码:4545 
# 创建文件目录
mkdir -p /data/soft/ && cd /data/soft/ 
# 创建配置文件目录
mkdir -p /data/soft/rocket/conf

# 创建存储路径
mkdir -p /data/soft/rocket/store/{commitlog,consumequeue,index}
# 修改默认端口
vi /data/soft/rocket/conf/nameser.properties
# 文件内容 默认9876
listenPort=20000

# 查看文件内容
cat /data/soft/rocket/conf/nameser.properties

 

# 上传 rocketmq-all-4.9.4-bin-release.zip
# 没有rz命令执行: yum -y install lrzsz
rz
# 安装解压工具
yum install -y unzip zip
# 解压rocketmq
unzip rocketmq-all-4.9.4-bin-release.zip

 

3.node1节点修改runserver.sh文件

RocketMQ默认预设的JVM内存是4G 用runserver.sh、runbroker.sh 、tools.sh编辑这三个脚本,在脚本中找到这一行调整内存大小为256M

# 两处
vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runserver.sh

# JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=160m"


vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/runbroker.sh
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"



vi /data/soft/rocketmq-all-4.9.4-bin-release/bin/tools.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"

4. 所有节点安装jdk

#查看jdk 1.8列表:
yum list java-1.8.0*
#安装jdk 1.8下所有包
yum install java-1.8.0-openjdk* -y
#查看安装结果
java -version

5. node1节点配置RocketMQ集群

下面配置只在node1节点上预先配置好。标题描述为该配置文件在那台服务器上使用
RocketMQ--Dledger集群搭建
RocketMQ--Dledger集群搭建_rocketmq dledger_84岁带头冲锋的博客-CSDN博客

1.配置node1节点borker-a的master配置文件

#192.168.1.3 node1节点配置borker-a的master节点2m-2s-async/broker-a.properties
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties

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

 

2.配置node2节点配置borker-a的slave borker-a-s节点

# 192.168.1.9
# 所属集群名字,名字一样的节点就在同一个集群内
# broker名字,名字一样的节点就是一组主从节点。
# brokerid,0就表示是Master,>0的都是表示 Slave
# nameServer地址类似zookeeper
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties
# 编辑配置文件粘贴下面内容
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties

 

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

3.配置node3节点配置borker-b的master节点

##所属集群名字,名字一样的节点就在同一个集群内
##broker名字,名字一样的节点就是一组主从节点。
# 复制5.1内容,修改brokerName=broker-a 为brokerName=broker-b即可

#192.168.1.10 
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties 
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties 

4.配置node4节点配置borker-b的slave节

###所属集群名字,名字一样的节点就在同一个集群内
###broker名字,名字一样的节点就是一组主从节点。
复制5.2内容,修改brokerName=broker-a 为brokerName=broker-b即可

#192.168.1.11
# 先删除在编辑
rm -rf /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties
# 复制配置文件
cp /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties 
# 修改brokerName=broker-a 为brokerName=broker-b
vi /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties 

6.将配置好的rocketmq打包拷贝到其他三台服务器

tar czvf rocketmq-all-4.9.4-bin-release.tar rocketmq-all-4.9.4-bin-release/

tar czvf rocket.tar rocket/

# 执行拷贝  rocketmq-all-4.9.4-bin-release.tar 文件   root 目标用户名@目标ip:目标目录(/ 根目录)
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.11:/data/soft/
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.10:/data/soft/
scp  rocketmq-all-4.9.4-bin-release.tar root@192.168.1.9:/data/soft/


# 执行拷贝  rocket.tar 文件   root 目标用户名@目标ip:目标目录(/ 根目录)
scp   rocket.tar root@192.168.1.11:/data/soft/
scp   rocket.tar root@192.168.1.10:/data/soft/
scp   rocket.tar root@192.168.1.9:/data/soft/

在这三台服务器上解压上面传输的两个文件

tar xzvf rocketmq-all-4.9.4-bin-release.tar

tar xzvf rocket.tar

ls

 7.打开防火墙端口

每个节点都要执行

namesrv只使用了一个9876端口,修改了默认配置改为20000

firewall-cmd --zone=public --add-port=20000/tcp --permanent

broker的服务端口号 修改broker的listenPort端口号为20001

firewall-cmd --zone=public --add-port=20001/tcp --permanent

haListenPort haListenPort是haService中使用

//默认值为:listenPort + 1 这个值是在BrokerStartup.java中设置的
/**
* 影响haservice中AcceptSocketService服务的端口号
* 参考:
* com.alibaba.rocketmq.store.ha.HAService 构造函数中
*     this.acceptSocketService =
   new AcceptSocketService(defaultMessageStore.getMessageStoreConfig().getHaListenPort());
*/
messageStoreConfig.setHaListenPort(nettyServerConfig.getListenPort() + 1);

firewall-cmd --zone=public --add-port=20002/tcp --permanent

fastListenPort

/**
 *主要用于slave同master同步。 默认为:主要是fastRemotingServer服务使用 listenPort - 2
 * listenPort - 2 默认 10909
 */
fastConfig.setListenPort(nettyServerConfig.getListenPort() - 2);
this.fastRemotingServer = new NettyRemotingServer(fastConfig, this.clientHousekeepingService)

firewall-cmd --zone=public --add-port=19999/tcp --permanent
# 重启生效
firewall-cmd --reload

 8.启动nameser

每台都执行即可下面命令

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqnamesrv  -c /data/soft/rocket/conf/nameser.properties &

 9.启动BrokerServer

1.node2 192.168.1.3

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a.properties >/dev/null 2>&1 &

2.node2 192.168.1.9

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-a-s.properties >/dev/null 2>&1 &

3.node3 192.168.1.10

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b.properties  >/dev/null 2>&1 &

4.node4 192.168.1.11

nohup sh /data/soft/rocketmq-all-4.9.4-bin-release/bin/mqbroker -c /data/soft/rocketmq-all-4.9.4-bin-release/conf/2m-2s-async/broker-b-s.properties   >/dev/null 2>&1 &

10.在node1节点上安装控制台 

 docker pull apacherocketmq/rocketmq-dashboard:latest


 

docker run -it -d \
--restart=always --privileged=true -m 300m \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.1.3:20000;192.168.1.9:20000;192.168.1.10:20000;192.168.1.11:20000 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 10024:8080 \
pangliang/rocketmq-console-ng

firewall-cmd --zone=public --add-port=10024/tcp --permanent
# 重启生效
firewall-cmd --reload

 

11.访问测试

192.168.1.3:10024

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

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

相关文章

【Python】Python系列教程--Python3 基本数据类型(五)

文章目录 前言多个变量赋值标准数据类型Number(数字)数值运算数值类型实例String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典&#x…

低代码开发重要工具:jvs-rules 规则引擎功能介绍(三)

一、JVS规则引擎的决策流可视化组成 决策流的可视化拼装 规则引擎是由多个组件组成的,这些组件共同协作实现规则的管理、执行和决策流的构建。 决策流:决策流是由多个业务节点连接而成的流程,用于实现复杂的业务逻辑。决策流中的业务节点按…

Rust安装手册

Rust 环境搭建 Rust 支持很多的集成开发环境(IDE)或开发专用的文本编辑器。 官方网站公布支持的工具如下(https://www.rust-lang.org/zh-CN/tools): 本教程将使用 Visual Studio Code 作为我们的开发环境&#xff08…

NIO之Selector解读

目录 Selector 简介 为什么会出现Selector Selector 和 Channel 关系 可选择通道(SelectableChannel) Channel 注册到 Selector 选择键(SelectionKey) Selector 的使用方法 Selector 的创建 注册 Channel 到 Selector 轮询查询就绪操作 停止选择的方法 Selector 简…

全志Tina Linux下如何编译glibc库

本文整理自问答:https://bbs.aw-ol.com/topic/3615/ make工具 注意由于AW服务器make版本为3.8.1,在编译glibc高版本时候不兼容,所以需要更新make工具。假如服务器make版本较高,可以不用更新make工具。 网址 http://ftp.gnu.org/…

chatgpt赋能python:Python函数介绍

Python函数介绍 函数是Python编程中最重要的概念之一。它是一段可重用代码的集合,通过一个名字来暴露出来,可以在Python程序的多个地方调用。函数可以接收任意数量的参数,也可以返回值。Python中函数定义使用关键字 def。 Python函数定义 …

ChatGPT教你学Python爬虫

“ chatgpt作为一个编程助手,虽然不能帮我们解决一个复杂的业务需求,但在处理一些具体工具类需求上,能够快速生成我们需要的代码,尤其对一些编程初学者,不仅能借助chatgpt快速完成自己的小工具,还能在与cha…

硬件 TCP/IP 协议栈

目录 全硬件的TCP/IP 协议栈简介以太网接入单片机方案以太网接口芯片CH395Q 简介以太网接口芯片CH395Q 命令简介以太网接口芯片CH395Q 寄存器配置与使用移植CH395Q 源码 TCP_Client 实验TCPClient 配置流程TCPClient 实验硬件设计程序设计下载验证 WebServer 实验WebServer 简介…

chatgpt赋能python:Python编程:如何写文件到指定目录

Python编程:如何写文件到指定目录 Python是一种高级编程语言,它具有简单易学、可读性高的特点,并且能够应用于各种领域,尤其是数据科学和机器学习领域。在Python中,我们可以通过编写代码实现将文件写入到指定目录中。…

JavaEE(系列18) -- 文件操作I/O

前言: 我们平时所说的文件都是指硬盘上的文件,而我们之前在JavaSE阶段代码绝大部分都是围绕内存展开的,定义个变量,其实就是内存上申请空间。 内存和硬盘的区别: 速度:内存比硬盘快很多。空间:内存空间比硬盘小。成本:内存比硬盘贵…

利用CiteSpace快速锁定领域内最新研究热点并制作精美的可视化专题图

【基于Citespace和vosviewer文献计量学相关论文 】 ​ 01 文献计量学方法与应用 1. 文献计量学方法基本介绍 2. 与其他综述方法区别联系 3. 各学科领域应用趋势近况 4. 主流分析软件优缺点对比 5. 经典高分10SCI思路复盘 6. 软件安装与Java环境配置 02 主题确定、数据检…

Power BI 如何高效管理度量值和字段

内容说明 背景需求: 当分析场景涉及大量数据和分析度量值时,为了更好的区分原始数据和用于分析的度量值,需要合理安排和管理数据字段。 本文总结了三种方法: 移动度量值位置创建字段文件夹:子文件夹和多个文件夹创建…

chatgpt赋能python:Python函数改名:为什么需要改名以及如何改名

Python函数改名:为什么需要改名以及如何改名 在Python编程中,函数是非常常见和重要的代码语句,用于完成特定的任务或操作。然而,在实际开发中,我们可能需要对已有函数进行改名,这个过程可能并不简单&#…

国产BI工具大比拼,帆软Fine BI和观远BI到底该怎么选型?

之前写了一篇关于BI如何选型的文章《「BI选型秘诀」BI工具不知道怎么选择?这张选型评分表你一定要收藏!》。 文章发布后,不少朋友私信我,想要我出个国产BI工具的测评,今天就开始第一期:帆软 VS 观远 仍旧…

el-form嵌套el-table编辑,校验信息显示在气泡框中

文章目录 概要整体架构流程技术名词解释技术细节 概要 提示:这里可以添加技术概要 正常情况下,el-table可编辑表格,如果输入框内容不合理的情况下,错误提示会显示在el-input下方对应。 但是,我不得不将错误提示放到el…

chatgpt赋能python:Python几行几列是什么?

Python几行几列是什么? Python几行几列是一款基于Python语言开发的优秀的划线工具。这个工具能够帮助开发者轻松创建、管理和分享自己的Python代码。Python几行几列是一款高效、易用的Python编辑器,它既可以用于快速编写Python代码,也可以用…

PG数据库 column “has_submit_am“ is of type numeric but expression is of type bool

目录 场景: 现象: 复盘分析: 解决方法: 测试: 扩展: 场景: 今天遇到一个问题,现场数据库中做了boolean隐式转换smallint时在执行对应的插入时一直报错 column "has_submit…

【Python NLTK】零基础也能轻松掌握的学习路线与参考资料

Python 自然语言处理工具包(Natural Language Toolkit,简称 NLTK)是一款 Python 的库,主要用于处理自然语言的相关问题,如文本清洗、标记化、分词、语义分析、词性标注、文本分类等功能,是数据科学家和机器…

Facebook不同账户类型的投放格式【Facebook企业户】

在Facebook企业户中,不同的广告类型具有多样化的投放格式,旨在帮助企业更好地吸引目标受众、提升品牌曝光和实现营销目标。 一、广告类型的概述 Facebook提供了多种广告类型,包括图片广告、视频广告、幻灯片广告、动态产品广告等。每种广告类…