rocketmq-5.1.2的dleger高可用集群部署

1、背景

原先为5.0.0版本,因检查出有漏洞,升级到5.1.2版本。
【Rocketmq是阿里巴巴在2012年开发的分布式消息中间件,专为万亿级超大规模的消息处理而设计,具有高吞吐量、低延迟、海量堆积、顺序收发等特点。在一定条件下,存在远程命令执行风险。攻击者可以利用该漏洞利用更新配置功能以RocketMQ运行的系统用户身份执行命令。】

2、部署规划-3台服务器

(1)服务器准备

  • 192.168.0.1(主)
  • 192.168.0.2(从)
  • 192.168.0.3(从)

(2)核对空间,内存

  • df -h
  • free -h

(3)确认启动用户及部署路径

  1. 用户:applin【确认有应用路径的写入执行权限,755,或应用路径归属于applin】
  2. 应用路径:/software/
  3. 数据存储路径:/applin/data_rocketmq
  4. 日志存储路径:/applin/logs_rocketmq

3、获取rocketmq-5.1.2版本并上传到服务器

(1)获取文件

rocketmq官方下载链接
选择5.1.2版本,Binary下载
(2)通过WinScp或其他上传包文件到指定服务器路径

  • 192.168.0.1:/software/rocketmq-all-5.1.2-bin-release.zip
  • 192.168.0.2:/software/rocketmq-all-5.1.2-bin-release.zip
  • 192.168.0.3:/software/rocketmq-all-5.1.2-bin-release.zip

4、dleger高可用集群部署

4.1、3台服务器统一操作

(1)新建日志+数据存储路径

cd /software
unzip rocketmq-all-5.1.2-bin-release.zip
su - applin
mkdir -p /applin/data_rocketmq
mkdir -p /applin/logs_rocketmq
cd /software/rocketmq-all-5.1.2-bin-release

(2)修改日志路径

执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/conf
执行命令2: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.broker.logback.xml
执行命令3: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.client.logback.xml
执行命令4: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.controller.logback.xml
执行命令5: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.namesrv.logback.xml
执行命令6: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.proxy.logback.xml
执行命令7: sed -i 's?${user.home}${file.separator}logs${file.separator}rocketmqlogs?/applin/logs_rocketmq?' /software/rocketmq-all-5.1.2-bin-release/conf/rmq.tools.logback.xml

(3)修改启动脚本内存及环境变量

  • 修改启动脚本runserver.sh,将环境变量改为实际路径(2个方法)
执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/bin
执行命令2: sed -i 's#${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m#${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m#' /software/rocketmq-all-5.1.2-bin-release/bin/runserver.sh
执行命令3:vim runserver.sh查看上述是否修改成功,同时更改环境变量如下,2个方法选其一
(1)[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk/jdk_linux
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
(2)[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk_linux
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk_linux
[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
  • 修改启动脚本runbroker.sh,将环境变量改为实际路径(2个方法)
执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/bin
执行命令2: sed -i 's#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"#JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"#' /software/rocketmq-all-5.1.2-bin-release/bin/runbroker.sh
执行命令3:vim runbroker.sh查看上述是否修改成功,同时更改环境变量如下,2个方法选其一
(1)[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk/jdk_linux
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
#[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
#[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
(2)[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk_linux
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/software/jdk_linux
[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"

4.2、3台服务器分别操作

目前看这两项有区别:
dLegerSelfId与dLegerPeers保持对应。
brokerIP1

(1) IP1 - 192.168.0.1(主)

执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/conf/dledger
执行命令2: vim broker-n0.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
#listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.0.1:9876;192.168.0.2:9876;192.168.0.3:9876
storePathRootDir=/applin/data_rocketmq/node00
storePathCommitLog=/applin/data_rocketmq/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:20911;n1-服务器2的IP:20911;n2-服务器3的IP:20911
dLegerPeers=n0-192.168.0.1:20911;n1-192.168.0.2:20911;n2-192.168.0.3:20911
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=n0
sendMessageThreadPoolNums=16
brokerIP1=192.168.0.1
执行命令3: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqnamesrv  &
执行命令4: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqbroker -c /software/rocketmq-all-5.1.2-bin-release/conf/dledger/broker-n0.conf &

(2) IP2 - 192.168.0.2(从)

执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/conf/dledger
执行命令2: vim broker-n1.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
#listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.0.1:9876;192.168.0.2:9876;192.168.0.3:9876
storePathRootDir=/applin/data_rocketmq/node00
storePathCommitLog=/applin/data_rocketmq/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:20911;n1-服务器2的IP:20911;n2-服务器3的IP:20911
dLegerPeers=n0-192.168.0.1:20911;n1-192.168.0.2:20911;n2-192.168.0.3:20911
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=n1
sendMessageThreadPoolNums=16
brokerIP1=192.168.0.2
执行命令3: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqnamesrv  &
执行命令4: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqbroker -c /software/rocketmq-all-5.1.2-bin-release/conf/dledger/broker-n1.conf &

(3) IP3 - 192.168.0.3(从)

执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/conf/dledger
执行命令2: vim broker-n2.conf
## 集群名
brokerClusterName = RaftCluster
## broker组名,同一个RaftClusterGroup内,brokerName名要一样
brokerName=RaftNode00
## 监听的端口
#listenPort=30911
## 你设置的NameServer地址和端口
namesrvAddr=192.168.0.1:9876;192.168.0.2:9876;192.168.0.3:9876
storePathRootDir=/applin/data_rocketmq/node00
storePathCommitLog=/applin/data_rocketmq/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
## n0 n1 n2 分别是broker1,broker2,broker3 的 dLegerSelfId
## 例如:dLegerPeers=n0-服务器1的IP:20911;n1-服务器2的IP:20911;n2-服务器3的IP:20911
dLegerPeers=n0-192.168.0.1:20911;n1-192.168.0.2:20911;n2-192.168.0.3:20911
## must be unique
## 这个值必须是在同一个RaftClusterGroup内唯一的
dLegerSelfId=n2
sendMessageThreadPoolNums=16
brokerIP1=192.168.0.3
执行命令3: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqnamesrv  &
执行命令4: nohup sh /software/rocketmq-all-5.1.2-bin-release/bin/mqbroker -c /software/rocketmq-all-5.1.2-bin-release/conf/dledger/broker-n2.conf &

5、验证

(1)查看集群服务是否启动成功:jps
命令执行后,可查看到两个进程,NamesrvStartup和BrokerStartup
(2)在集群中任意一个节点的bin目录下执行如下命令:

执行命令1: cd /software/rocketmq-all-5.1.2-bin-release/bin
执行命令2: sh mqadmin clusterList -n 127.0.0.1:9876

结果中addr中有broker信息。
#BID显示3个,0+1+2,ACTIVATED显示3个,1个true+2个false。
(2)kill主broker并在此查看集群情况,master切换是否成功。重新启动后原master服务器变为从。【BID的0表示主】

6、日志

(1)Dleger高可用集群,3台中至少2台启动才不会报错
(2)核对配置项是否有错误
(3)空间不足、内存不足,清理后重启应用

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

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

相关文章

牧原发布年度低碳报告,看行业“一哥”如何数字化减碳!

此前,牧原信息化负责人何秋梅在接受绿研院的专题访谈时提到:“在销售、采购等业务上,都涉及到大量的合同和文件,传统的纸质合同保存和管理繁琐,需要档案柜存储,且成本高昂。使用电子签不仅节省了打印、盖章…

优雅迷人的小程序 UI 风格

优雅迷人的小程序 UI 风格

什么是DMZ?路由器上如何使用DMZ?

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 DMZ 📒🚀 DMZ的应用场景💡 路由器设置DMZ🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 在网络管理中,DMZ(Demilitarized Zone,隔离区)是一个特殊的网络区域,常用于将公共访问和内部网络隔离开来。DMZ功能允许…

【Android面试八股文】1. 你说一说Handler机制吧 2. 你知道Handler的同步屏障吗? 3. Looper一直在循环,会造成阻塞吗?为什么?

文章目录 一. 你说一说Handler机制吧二、你知道Handler的同步屏障吗?2.1 Handler消息的分类2.2 什么是同步屏障2.3 为什么要设计同步屏障2.4 同步屏障的用法 三、Looper一直在循环,会造成阻塞吗?为什么?扩展阅读 一. 你说一说Hand…

大数据在商业中的应用——Kompas.ai如何助力企业决策

引言 在现代商业中,大数据逐渐成为企业决策的重要工具。通过对海量数据的分析和处理,企业可以获得重要的市场信息和决策支持。本文将探讨大数据在商业中的应用,并介绍Kompas.ai如何通过AI技术助力企业决策。 大数据的发展及其重要性 大数据…

项目文章 | Cell ReportsChIP-seq和RNA-seq联合鉴定伯克霍尔德氏菌毒性的重要调节因子

发表单位:中山大学深圳校区制药科学学院 发表日期:2024年5月14日 研究期刊:Cell Reports(IF: 8.8) 研究材料:伯克霍尔德氏菌 主要技术:ChIP-seq,EMSA,微尺度热泳分析…

1970-2021年各区县碳排放总量,可选择所需年份获取,shp/excel多种格式数据

基本信息. 数据名称: 1970-2021年各区县碳排放总量 数据格式: Shpexcel 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据

Java面经总结

一、java基础 1.重载和重写的区别 重载: 发生在同一类中,函数名必须一样,参数类型、参数个数、参数顺序、返回值、修饰符可以不一样。重写: 发生在父子类中,函数名、参数、返回值必须一样,访问修饰符必须…

清晖项目管理资深企业咨询顾问闫清受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 清晖项目管理资深企业咨询顾问闫清女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“PMO的多重人工智能价值”。大会将于6月29-30日在北京举办,敬请关注! 议题简要: 在近几年的AI概…

据阿谱尔统计显示,2023年全球凹版印刷机市场销售额约为9.1亿美元

根据阿谱尔 (APO Research)的统计及预测,2023年全球凹版印刷机市场销售额约为9.1亿美元,预计在2024-2030年预测期内将以超过2.54%的CAGR(年复合增长率)增长。 由于对软包装和印刷包装的需求不断增长,全球凹…

前端问题整理

Vue vue mvvm(Model-View-ViewModel)架构模式原理 Model 是数据层,即 vue 实例中的数据View 是视图层, 即 domViewModel,即连接Model和Vue的中间层,Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…

SpringCloud学习笔记 - 1、Boot和Cloud版本选型

文章目录 前言需要(学习/用到)的技术SpringBoot版本的选择我们为什么要使用 Java 17,以及SpringBoot 3.2 呢? SpringCloud 版本的选择SpringCloud 命名规则Springcloud Alibaba 版本的选择如何确定Boot,Cloud&#xff…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法: select distinct 列名 from 表; distinct必须在列的前面,否则直…

大语言模型LLM-三种模型架构

Transformer transfomer可以并行地计算? transformer中encoder模块是完全并行的,而decoder不是完全并行的。 模型结构 使用原文表达如下:the encoder maps an input sequence of symbol representations \((x_1, x_2, \cdots, x_n)\) to …

ICRA 2024:基于视觉触觉传感器的物体表⾯分类的Sim2Real双层适应⽅法

⼈们通常通过视觉来感知物体表⾯的性质,但有时需要通过触觉信息来补充或替代视觉信息。在机器⼈感知物体属性⽅⾯,基于视觉的触觉传感器是⽬前的最新技术,因为它们可以产⽣与表⾯接触的⾼分辨率 RGB 触觉图像。然⽽,这些图像需要⼤…

tmega128单片机控制的智能小车设计

第1章 绪论1.1 选题背景和意义 自第一台工业机器人诞生以来,机器人的民展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人工作的机器一…

六西格玛培训,让企业焕然一新,迎接新挑战!

在当今快速变革的商业环境中,企业要保持竞争力,就必须不断进化、优化和创新。而六西格玛培训,正是这一进化过程中的核心驱动力。 六西格玛培训不仅仅是一系列的技术和工具,更是一种深入骨髓的质量文化和持续改进的哲学。通过专业…

微服务架构 | nacos - [自动刷新配置方式 失效排查]

INDEX 1 配置方式1.1 springboot 配置1.2 springcloud 配置 2 失效排查2.1 常见失效场景2.1.1 配置不配套2.1.2 自动刷新未开启2.1.3 依赖冲突2.1.4 改错了配置文件 2.2 未知情况关键排查点 1 配置方式 nacos 的配置中心主要有两套配置方式,配置方式不互相共通&…

Qt绘图项目 - 简易表盘

发话少说&#xff0c;放码过来 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();prot…

lammps聚合物断键拉伸模拟

本文介绍聚合物的断键拉伸。 在lammps模拟中&#xff0c;所有的键默认是永久存在的&#xff0c;非正常情况下&#xff0c;不能断开&#xff0c;否则会产生"bond atoms missing”错误。 聚合物的拉伸模拟过程中&#xff0c;聚合物链并没有被拉断&#xff0c;而只是把不同的…