RocketMQ两主两从部署搭建

news2024/11/16 13:54:38

安装部署
1.1 部署环境
在这里插入图片描述

1.2 安装要求
建议使用64位操作系统,建议使用Linux / Unix / Mac;
64位JDK 1.8+;
Maven 3.2.x;(非必要)
Git;(非必要)
1.3 获取rocketmq安装包,并解压
下载官方RocketMQ压缩包,各版本下载页面:http://rocketmq.apache.org/release_notes/
source版本为需要自己编译的版本,bin版本直接解压即可。

cd /app
wget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip
unzip rocketmq-all-4.5.2-bin-release.zip
mv rocketmq-all-4.5.2-bin-release rocketmq
cd /app/rocketmq/bin
vim runbroker.sh
    #默认值为生产环境配置,虚机需要修改,不能低于1g
    #JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
vim runserver.sh
    #默认值为生产环境配置,虚机需要修改,不能低于1g
    #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspacSize=128m -XX:MaxMetaspaceSize=320m"

1.4 创建配置文件目录

mkdir -p /app/rocketmq/rocketmq-a/{conf,store,logs}
mkdir -p /app/rocketmq/rocketmq-a/store/{index,commitlog,consumequeue}

其他rocketmq实例参照上面创建。
批量修改conf下日志文件的配置,将配置中所有的${user.home}变量替换为/app/rocketmq/。

cd /app/rocetmq/conf && sed -i 's#${user.home}#/app/rocketmq#g' *.xml

1.5 修改配置文件
编辑broker-a.properties

vim /app/rocketmq/rocketmq-a-m/conf/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-csf
brokerName=broker-a
#0 表示 Master>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.40:9876;192.168.1.41:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=10911
#Master监听slave请求端口,用于主从同步,默认为服务端口+1
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/rocketmq-a/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/rocketmq-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/rocketmq-a/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/rocketmq-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/rocketmq-a/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/rocketmq-a/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.40

编辑broker-a-s.properties

vim /app/rocketmq/rocketmq-a-m/conf/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-csf
#broker名字,名字可重复,为了管理,每个master起一个名字,他的slave同他,eg:Amaster叫broker-a,他的slave也叫broker-a
brokerName=broker-a
#0 表示 Master>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.1.40:9876;192.168.1.41:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口,10911为默认值
listenPort=10911
#Master监听slave请求端口,用于主从同步,默认为服务端口+1
haListenPort=10912
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/app/rocketmq/rocketmq-a/store
#commitLog 存储路径
storePathCommitLog=/app/rocketmq/rocketmq-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/app/rocketmq/rocketmq-a/store/consumequeue
#消息索引存储路径
storePathIndex=/app/rocketmq/rocketmq-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/app/rocketmq/rocketmq-a/store/checkpoint
#abort 文件存储路径
abortFile=/app/rocketmq/rocketmq-a/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
#强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误
brokerIP1=192.168.1.41

broker-b.properties配置参考broker-a.properties
broker-b-s.properties配置参考broker-a-s.properties
当单台服务器上跑多个RocketMQ实例时有一个点要特别注意,那就是listenPort和haListenPort的配置,大多数情况下haListenPort是默认不配的,因此当一个实例使用默认的listenPort=10911端口时,haListenPort会默认占用10912端口,因此需要再配置下一个RocketMQ实例时要避开上述两个端口,多个实例之间的listenPort端口需要>2。
1.6 服务启动
服务启动包括两部分,NameServer的启动和BrokerServer的启动,其中NameServer类似于注册中心的角色,而BrokerServer才是真正处理消息的服务器。

cd /app/rocketmq/bin
nohup sh mqnamesrv >/app/rocketmq/mqnamesrv.log &
nohup sh mqbroker -c /app/rocketmq/rocketmq-a/conf/broker-a.properties >/app/rocketmq/rocketmq/rocketmq-a/log/mqbroker.log &

1.7 服务关闭

cd /app/rocketmq/bin
sh mqshutdown namesrv
sh mqshutdown broker

1.8 服务管理
如果需要查询NameServer集群的情况,可以使用如下命令查看:

sh mqadmin clusterList -n "192.168.1.40:9876;192.168.1.41:9876"

可视化监控部署

2.1 安装maven 3.2以上

wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
tar -zvxf apache-maven-3.6.2-bin.tar.gz -C /usr/local/maven
vim /etc/profile
   #maven
   export MAVEN_HOME=/usr/local/apache-maven-3.6.2
   export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
mvn --version

settings.xml修改配置如下:

vim /usr/local/maven/apache-maven-3.6.2/conf/settings.xml
<mirrors>
   <!-- mirror
    | Specifies a repository mirror site to use instead of a given repository. The re
pository that
    | this mirror serves has an ID that matches the mirrorOf element of this mirror.
IDs are used
    | for inheritance and direct lookup purposes, and must be unique across the set o
f mirrors.
    |
   <mirror>
     <id>mirrorId</id>
     <mirrorOf>repositoryId</mirrorOf>
     <name>Human Readable Name for this Mirror.</name>
     <url>http://my.repository.com/repo/path</url>
   </mirror>
    -->
    <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
 </mirrors>

2.2 下载部署
Apache版的RocketMQ管理界面部署工具可以从github上下载源码,地址:https://github.com/apache/rocketmq-externals,部署流程如下:

cd /app/rocketmq
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console/src/main/resources/

修改配置如下图:

vim application.properties

在这里插入图片描述

server.port #是管理界面端口设置,默认为8080;
rocketmq.config.namesrvAddr #如果nameserver有多个,则后面就配置多个ip+port,用分号 分割;
rocketmq.config.isVIPChannel #注意这个参数,默认为true,如果rocketmq版本号 < 3.5.8 则设置为false;
rocketmq.config.dataPath #
2.3 编译rocketmq-console

mvn clean package -Dmaven.test.skip=true

编译需用maven命令进行编译,如下图,显示BIUD SUCCESS,则编译成功,编译成功后在target下找到文件:rocketmq-console-ng-1.0.1.jar
在这里插入图片描述
2.4 运行jar包
nohup java -jar target/rocketmq-console-ng-1.0.1.jar >/dev/null 2>&1 &

2.5 访问管理界面
浏览器输入http://192.168.1.40:8080/
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

基于Java SSM框架+Vue实现房屋租赁网站项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架Vue实现房屋租赁网站演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;房屋租赁系统当然也不能排除在外。房屋租赁系统是以实际运用为开发背景&…

宝宝洗衣机买几公斤?高性价比婴儿专用洗衣机推荐

宝宝的抵抗力还比较弱&#xff0c;如果把大人的衣服跟宝宝的混洗&#xff0c;衣服上一旦沾上大人衣服上的细菌可能会导致宝宝生病再者&#xff0c;需要的清洗剂不一样&#xff0c;一般选择宝宝的洗衣液时会选择宝宝专用的低敏洗衣液&#xff0c;这样可以有效防止宝宝的皮肤过敏…

arcgis导出某个属性的栅格

选中栅格特定属性想要导出时&#xff0c;无法选中“所选图形” 【方法】spatial analyst 工具——提取分析——按属性提取

fiddler抓包安卓

一、打断点 1、安卓手机和电脑在同一局域网下&#xff0c;手机连接的网络开启手动代理&#xff0c;ip填写电脑ip&#xff0c;端口填写fiddler中配置的端口。 ip查看&#xff1a; 端口配置&#xff1a;tools-options-connections 2、安装证书&#xff0c;手机浏览器输入电脑ip…

盘点68个Android系统源码安卓爱好者不容错过

盘点68个Android系统源码安卓爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 源码下载链接&#xff1a;https://pan.baidu.com/s/1FcBxCe7KpJsh0zFxNZ_7wg?pwd8888 提取码&#xff1a;8888 项目名称 Android …

PyQuery库编写下载代码示例

python import requests from pyquery import PyQuery as pq # 设置 proxies { "http": "", "https": "" } # 使用requests.get()方法获取网页内容 response requests.get() # 使用PyQuery解析网页内容&#xff0c;获取视…

编码未来已然来临:无代码、低代码助力软件驱动世界

在当今时代&#xff0c;企业无不致力于探寻能够实现降本增效的有效路径。在众多热门技术中&#xff0c;AI人工智能和机器学习等概念已经被广泛采纳并应用于各行业的实际业务场景中。当企业开始树立起数字化意识&#xff0c;他们通常会选择以下两条路径中的一条来实现数字化转型…

element table滚动到底部加载数据(vue3)

效果图 使用插件el-table-infinite-scroll npm install --save el-table-infinite-scroll局部导入 <template><div class"projectTableClass"><el-table v-el-table-infinite-scroll"load"></el-table></div> </temp…

内存泄漏检测工具valgrind

示例&#xff1a; class Person { public:Person(int age){//将年龄数据开辟到堆区m_Age new int(age);}//重载赋值运算符 写法2 此代码在linux测试Person& operator(Person& p){*m_Age *p.m_Age; //通过linux下valgrind工具检测&#xff0c;无内存泄漏情况。//此语…

手把手教你写IP地址规划方案

中午好&#xff0c;我的网工朋友。 IP地址的合理规划是网络设计的重要环节&#xff0c;大型计算机网络必须对IP地址进行统一规划并得到有效实施。 IP地址规划的好坏&#xff0c;不仅会影响到网络路由协议算法的效率&#xff0c;还会影响到网络的性能&#xff0c;网络的扩展&a…

快手自动评论助手:开发流程与所需技术的深度解析

先来看实操成果&#xff0c;↑↑需要的同学可看我名字↖↖↖↖↖&#xff0c;或评论888无偿分享 一、引言 随着互联网的发展&#xff0c;越来越多的人开始使用快手这款短视频平台。在这个平台上&#xff0c;用户可以分享自己的生活点滴&#xff0c;观看他人的精彩瞬间。然而&am…

震坤行自有品牌 | 搬运存储全面打造快速选型的标准品

震坤行自有品牌 | 搬运存储全面打造快速选型的标准品 中国仓储与配送协会2023年仓储配送行业发展与趋势展望报告中指出&#xff0c;截至2022年底&#xff0c;我国营业性通用&#xff08;常温&#xff09;仓库面积约为12.2亿㎡&#xff0c;仓储业&#xff08;含装卸搬运&#x…

element-plus el-dialog 弹窗隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作等

场景 el-dialog 隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作&#xff0c;比如一个弹窗打开了&#xff0c;我要能控制弹窗后面的滚动、点击等等一系列事件。 修改方法 首先我们需要隐藏弹窗遮罩 :modal"false"&#xff0c;并且给 el-dialog 弹窗…

NB-IoT BC260Y Open CPU SDK⑤点亮一个LED

NB-IoT BC260Y Open CPU SDK⑤点亮一个LED 1、BC260Y gpio资源介绍2、相关API介绍3、调试信息串口打印3、实例分析 本章节将介绍BC260Y硬件GPIO相关操作 1、BC260Y gpio资源介绍 BC260Y-AA的sdk包中官方给出了16个可用IO 在ql_gpio.h文件中有定义如下/**********************…

Windows系统如何远程控制Realme手机?

realme使用的是realme UI系统。realme UI是realme研发的操作系统&#xff1b;realme UI 1.0基于安卓10系统&#xff0c;realme UI 2.0基于安卓11系统&#xff0c;realme UI 3.0基于安卓12系统。 对于安卓4.0及以上系统的手机&#xff0c;都可以通过软件AirDroid实现远程控制。 …

Python教程:装饰器的10个示例用法

Python装饰器是一种高级语法&#xff0c;它允许我们增强函数或方法的功能&#xff0c;而无需修改其原始代码。装饰器本质上是一个函数&#xff0c;它接收一个函数作为参数&#xff0c;并返回一个新的函数。这个新的函数可以包装原有函数&#xff0c;添加一些新的功能。 在Pyth…

Elasticsearch:对时间序列数据流进行降采样(downsampling)

降采样提供了一种通过以降低的粒度存储时间序列数据来减少时间序列数据占用的方法。 指标&#xff08;metrics&#xff09;解决方案收集大量随时间增长的时间序列数据。 随着数据老化&#xff0c;它与系统当前状态的相关性越来越小。 降采样过程将固定时间间隔内的文档汇总为单…

Java零基础——Redis篇

1.【熟悉】NoSQL的简介 1.1 什么是NoSQL NoSQL 是 Not Only SQL 的缩写&#xff0c;意即"不仅仅是SQL"的意思&#xff0c;泛指非关系型的数据库。强调Key-Value Stores和文档数据库的优点。 NoSQL产品是传统关系型数据库的功能阉割版本&#xff0c;通过减少用不到或…

JD-GUI和JAD对War包和Jar包进行反编译教学

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、JD-GUI下载及对Jar包的反编译 1.1选择自己的操作系统进行下载​编辑 1.2下载完后进行解压双击exe文件打开 1.3点击File菜单栏的Open File打开需要…

机器学习:DBSCAN算法(效果比K-means好)

基本概念 核心对象&#xff1a;以点为圆心半径为r的圆&#xff0c;如果圈里面的样本点大于给定的阈值(minPts)&#xff0c;那么这个点就叫做核心点 直接密度可达&#xff1a;点p在q为圆心的圆内 密度可达&#xff1a; p1与p2直接密度可达&#xff0c;p2与p3直接密度可达&…