RocketMQ集群配置

我们集群部署采取采用2m-2s(同步双写)方式,每个Master配置一个Slave,有多对Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功.

在这里插入图片描述

1、服务器环境

序号IP角色架构模式
1192.168.202.129nameserver、brokerserverMaster1、Slave2
2192.168.202.130nameserver、brokerserverMaster2、Slave1

2、Host添加信息

每台机器都需要执行

vi /etc/hosts

配置如下:

# nameserver
192.168.202.129 rocketmq-nameserver1
192.168.202.130 rocketmq-nameserver2
# broker
192.168.202.129 rocketmq-master1
192.168.202.129 rocketmq-slave2
192.168.202.130 rocketmq-master2
192.168.202.130 rocketmq-slave1

配置完成后, 重启网卡

systemctl restart network

3、防火墙配置

每台机器都需要执行,把防火墙关闭一下

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

4、环境变量配置

每台机器都需要执行

vi /etc/profile

增加内容如下:

ROCKETMQ_HOME=/usr/local/rocketmq4.4
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin:$ROCKETMQ_HOME/bin

重新加载

source /etc/profile

5、创建消息存储目录

# master节点存储目录
mkdir -p /usr/local/rocketmq-store/store-m
mkdir -p /usr/local/rocketmq-store/store-m/commitlog
mkdir -p /usr/local/rocketmq-store/store-m/consumequeue
mkdir -p /usr/local/rocketmq-store/store-m/index
# slave节点存储目录
mkdir -p /usr/local/rocketmq-store/store-s
mkdir -p /usr/local/rocketmq-store/store-s/commitlog
mkdir -p /usr/local/rocketmq-store/store-s/consumequeue
mkdir -p /usr/local/rocketmq-store/store-s/index

6、配置文件

1) Master1

所在服务器:192.168.202.129

vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a.properties 

配置内容如下:

#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=master01
#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
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-m
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-m/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-m/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-m/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-m/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-m/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH

2) Slave2

所在服务器:192.168.202.129

vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b-s.properties 

配置内容如下:

#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=slave02
#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
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-s/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

3) Master2

所在服务器:192.168.202.130

vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b.properties 

配置内容如下:

#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=master02
#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
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-m
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-m/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-m/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-m/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-m/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-m/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH

4) Slave1

所在服务器:192.168.202.130

vi /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a-s.properties 

配置内容如下:

#所属集群名字
brokerClusterName=mq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=slave01
#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
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq-store/store-s
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq-store/store-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq-store/store-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq-store/store-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq-store/store-s/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq-store/store-s/abort
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH

7、修改启动脚本文件

每台服务器都需要修改

1) runbroker.sh

vi /usr/local/rocketmq4.4/bin/runbroker.sh

需要根据内存大小进行适当的对JVM参数进行调整:

#===================================================================================
# JVM Configuration
#===================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

2) runserver.sh

vi /usr/local/rocketmq4.4/bin/runserver.sh

需要根据内存大小进行适当的对JVM参数进行调整:

#==================================================================================
# JVM Configuration
#==================================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

8、服务启动

1) 启动NameServer集群

分别在192.168.202.129和192.168.202.130启动NameServer

cd /usr/local/rocketmq4.4/bin/
nohup sh mqnamesrv &

2) 启动Broker集群

在192.168.202.129上启动master01和slave02

master01

cd /usr/local/rocketmq4.4/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a.properties &

slave02

cd /usr/local/rocketmq4.4/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b-s.properties &

在192.168.202.130上启动master02和slave01

master02

cd /usr/local/rocketmq-4.9/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-b.properties &

slave01

cd /usr/local/rocketmq-4.9/bin/
nohup sh mqbroker -c /usr/local/rocketmq-4.9/conf/2m-2s-sync/broker-a-s.properties &

启动完毕之后,使用JPS命令查看进程:

在这里插入图片描述

在这里插入图片描述

9、启动管控台

配置文件中的nameServer地址修改如下:

server:
  port: 9999
rocketmq:
  config:
    namesrvAddrs:
      - 192.168.202.129:9876
      - 192.168.202.130:9876

启动

java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar

在集群页面中需要看到这几个节点:

在这里插入图片描述

程序端代码该怎么还还是怎么写.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文详解MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM及其关系

经常遇到很多系统,比如:MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM、EAM,这些都是什么系统?有什么功能和作用?它们之间的关系是怎样的? 今天就一文详细分享给大家。 10大系统之间的关系 ERP 和其他…

深度学习之PyTorch实现卷积神经网络(CNN)

在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)是一种非常强大的模型,专门用于处理图像数据。CNN通过卷积操作和池化操作来提取图像中的特征,具有较好的特征学习能力,特别适用…

机器学习算法快速入门

文章目录 0.简介1.常用术语1) 模型2) 数据集3) 样本&特征4) 向量5) 矩阵6)假设函数&损失函数7)拟合&过拟合&欠拟合 2.线性回归3.梯度下降求极值4.Logistic回归算法(分类问题)5.KNN最邻近分类算法6.朴素贝叶斯分类算法7.决策树…

Python调用微信OCR识别文字和坐标

原理 在看雪看到一篇文章:逆向调用QQ截图NT与WeChatOCR-软件逆向。里面说了怎么调用微信和QQ本地的OCR模型,还有很详细的分析过程。 我稍微看了下文章,多的也看不懂。大概流程是使用mmmojo.dll这个dll来与WeChatOCR.exe做通信的&#xff0c…

1688拍立淘接口:图像识别技术引领电商搜索新革命,打造智能购物新体验!

1688拍立淘接口:技术解析与应用实践 一、引言 在电子商务蓬勃发展的今天,图像识别技术正逐渐成为各大电商平台提升用户体验、优化搜索效率的关键技术之一。作为阿里巴巴旗下的B2B采购批发平台,1688也紧跟技术潮流,推出了拍立淘接…

Dos命令的基础

雷迪斯and the乡亲们 欢迎你们来到 奇幻的编程世界 一、DOS命令基础 提示符 根目录:进入大到分区后,最外层的目录就是跟目录 工作目录:当前的所在位置/所在文件夹 二、cd命令 切换工作目录: cd 格式: cd 目标 …

巧避海森堡不确定性原理!量子比特读出技术重磅突破

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:1200字丨7分钟阅读 摘要:阿尔托大学研究人员用微测辐射热计替代传统参数放大器,以更少的附加噪声实现非侵入式量子比特测量…

排序链表 - LeetCode 热题 33

大家好!我是曾续缘😹 今天是《LeetCode 热题 100》系列 发车第 33 天 链表第 12 题 ❤️点赞 👍 收藏 ⭐再看,养成习惯 排序链表 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a…

带你追踪 ICASSP 2024会议现场 韩国夜景令人陶醉

会议之眼 快讯 昨天,2024年的ICASSP(International Conference on Acoustics, Speech, and Signal Processing)即国际声学、语音和信号处理会议已经在韩国首尔拉开帷幕!吸引了众多热情的与会者!本届ICASSP会议举办日期…

实验笔记之——RGBD GS-ICP SLAM配置与测试

《RGBD GS-ICP SLAM》是最新开源的一个3DGS-SLAM工作,通过利用GICP来实现当前帧gaussian与已mapping的gaussian进行匹配进行位姿的估算,并通过关键帧的选择策略来进一步提升performance~ Use G-ICP to align the current frame with the 3D GS map whic…

Redis消息队列-基于PubSub的消息队列

7.3 Redis消息队列-基于PubSub的消息队列 PubSub(发布订阅)是Redis2.0版本引入的消息传递模型。顾名思义,消费者可以订阅一个或多个channel,生产者向对应channel发送消息后,所有订阅者都能收到相关消息。 SUBSCRIBE …

OpenHarmony实战开发-图片选择和下载保存案例。

介绍 本示例介绍图片相关场景的使用:包含访问手机相册图片、选择预览图片并显示选择的图片到当前页面,下载并保存网络图片到手机相册或到指定用户目录两个场景。 效果图预览 使用说明 从主页通用场景集里选择图片选择和下载保存进入首页。分两个场景点…

Linux的重要命令(二)+了解Linux目录结构

目录 一.Linux的目录结构 二.查看文件内容命令 1.cat 命令 2.more 命令 3.less 命令 4.head 命令 5.tail 命令 6.拓展 head 和 tail 的其他用法 ​编辑 三.统计文件内容的命令-wc ​编辑 四.检索和过滤文件内容的命令-grep ​编辑 ​编辑 五.压缩命令 gzip 和 bz…

Canvas 画布基本用法详解

Canvas 画布 HTML中的 <canvas> 标签用于动态绘制图形&#xff0c;所有在<canvas>中的画图必须用JavaScript完成。 <canvas>标签是透明的&#xff0c;它是图形的容器&#xff0c;必须使用脚本才能实际绘制图形。 绘制一个简单的矩形 <!-- canvas标签&a…

Python基于卷积神经网络的车牌识别系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【数据结构与算法】递推

来源&#xff1a;《信息学奥赛一本通》 所谓递推&#xff0c;是指从已知的初始条件出发&#xff0c;依据某种递推关系&#xff0c;逐次推出所要求的各中间结果及最后结果。其中初始条件或是问题本身已经给定&#xff0c;或是通过对问题的分析与化简后确定。 从已知条件出发逐…

jenkins(docker)安装及应用

jenkins Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用于持续、自动的构建/测试软件项目、监控外部任务的运行&#xff08;这个比较抽象&#xff0c;暂且写上&#xff0c;不做解…

论坛直击|发展新质生产力,高校怎么做?

新质生产力浪潮涌动 三大议题聚焦高校人才培养 今年全国两会的政府工作报告将“大力推进现代化产业体系建设&#xff0c;加快发展新质生产力”列在2024年政府工作任务首位&#xff0c;发展新质生产力的先导是培养拔尖创新人才&#xff0c;高等教育改革必须以立德树人为根本任…

幽灵漏洞进阶版来了

近日&#xff0c;网络安全研究人员披露了针对英特尔系统上 Linux 内核的首个原生 Spectre v2 漏洞&#xff0c;该漏洞是2018 年曝出的严重处理器「幽灵」&#xff08;Spectre&#xff09;漏洞 v2 衍生版本&#xff0c;利用该漏洞可以从内存中读取敏感数据&#xff0c;主要影响英…

Java怎么获取今天最早的时间

今天在实现项目里的一个功能的时候&#xff0c;需要获取今天最早的时间&#xff0c;比如今天是2024-4-15&#xff0c;则今天的开始时间为2024-4-14日24点之后&#xff08;2024-4-15零点&#xff09;的那个时间点。 这篇文章就分享一下博主获取这个时间的方法&#xff1a; 很简…