RocketMQ集群搭建,及RocketMQ-Dashboard部署(前RocketMQ-Console)

集群搭建 

RocketMQ不支持单主机搭建主从结构集群,当从节点启动时,即使和主节点设置不同的监听端口,他也要去监听主节点端口,也就是说正常启动的从节点会监听四个端口。原因未知,现象后面会列举出来。

1. 准备JAVA环境,下载RocketMQ包

Rocket是由Java开发的一款消息中间件,所以我们需要先下载Java环境,才能正常运行。

yum install java-1.8.0-openjdk

如果显示找不到包,可以通过下面的文章配置自己CentOS版本和架构对应的阿里源 

Centos替换yum阿里云源,epel源(最简单)icon-default.png?t=N7T8https://blog.csdn.net/dxh9231028/article/details/140790971?spm=1001.2014.3001.5502准备好Java环境后,进入RocketMQ官网,点击右上位置的DownLoad按钮,进入下载页面。

右键点击想要下载的版本的二进制包,复制链接

进入主机终端,通过wget下载RocketMQ压缩包,并解压。 我使用的命令是下载5.3.0版本的RocketMQ,命令如下:

#进入根目录
cd /#下载RocketMQ
wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.0/rocketmq-all-5.3.0-bin-release.zip#解压RocketMQ压缩包
unzip /rocketmq-all-5.3.0-bin-release.zip#删除压缩包
rm -rf /rocketmq-all-5.3.0-bin-release.zip#将解压缩的RocketMQ改名
mv /rocketmq-all-5.3.0-bin-release/ /rocketmq

2. 修改配置文件

进入rocketmq文件夹中,查看conf内容可以看到如下内容

cd /rocketmq/
ll ./conf/

其中,前面三个文件夹分别是两主两从同步同步数据集群,两主两从异步同步数据集群,以及两主无从集群,Rocket已经给了我们基本配置,我们这俩选择两主两从同步同步数据集群。

如果是虚拟机环境,可以在一个主机上将四个主机的配置都配置好,然后在克隆当前主机四份,修改ip即可。而如果真实环境下,则需要分别在不同主机配置。 修改命令及内容如下

#修改a主机的配置文件的命令
vim ./conf/2m-2s-async/broker-a.properties#==============================配置内容如下==================================
#自带的配置
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
#手动添加的配置
namesrvAddr=192.168.166.21:9876;192.168.166.22:9876
#修改a从机的配置文件的命令
vim ./conf/2m-2s-async/broker-a-s.properties#==============================配置内容如下==================================
#自带的配置
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH#手动添加的配置
namesrvAddr=192.168.166.21:9876;192.168.166.22:9876
#修改b从机的配置文件的命令
vim ./conf/2m-2s-async/broker-b-s.properties#==============================配置内容如下==================================
#自带的配置
brokerClusterName=DefaultCluster
brokerName=broker-b
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH]#手动添加的配置
#listenPort和haListenPort默认为10911和10912,可以不用改,我是为了测试从节点会监听主节点端口
listenPort=10913
haListenPort=10914
namesrvAddr=192.168.166.21:9876;192.168.166.22:9876

可以看到,四个节点的配置都只需要添加namesrvAddr地址的集群即可,其他的配置都已经是配置好了的,其中brokerName实际上更像是一个组的概念,brokerName相同的节点之间会构成主从关系,而brokerId只需要在这个组内不重复即可。

每个节点默认监听10911和10912两个端口,可以不用指定,最后一个从节点我指定了,是为了测试文章开头提到的问题。

3. 修改启动脚本(根据内存大小可选)

Rocket启动脚本是bin目录下的mqbroker文件,脚本启动时会向jvm申请8G内存,不过在虚拟机环境下,通常不会有这么多内存,所以为了集群的正常启动,我们需要修改启动脚本中的内容,类似下面的这个指令:

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"

mqbroker脚本内部还会执行runbroker.sh,上述指令存在于两个文件中的一个,大概率在runbroker.sh文件中,我们文件中找到类似的内容,修改为如下内容:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

生产环境下,如果内存足够,无需修改。

4. 启动集群

1. 启动nameServer集群

RocketMQ依赖nameServer处理集群元数据,所以我们要先讲配置中的nameServer集群启动,在配置的主机中执行如下命令,启动nameServer。

/rocketmq/bin/mqnamesrv

看到如下信息后证明nameServer节点启动成功 

2. 启动RocketMQ集群 

必须nameServer集群中节点全部启动后,我们在继续启动各个RocketMQ节点,在各个主机分别执行如下命令:

#启动a主节点
/rocketmq/bin/mqbroker -c /rocketmq/conf/2m-2s-async/broker-a.properties#启动a从节点
/rocketmq/bin/mqbroker -c /rocketmq/conf/2m-2s-async/broker-a-s.properties#启动b主节点
/rocketmq/bin/mqbroker -c /rocketmq/conf/2m-2s-async/broker-b.properties#启动b从节点
/rocketmq/bin/mqbroker -c /rocketmq/conf/2m-2s-async/broker-b-s.properties

看到最后一行为类似如下内容证明启动成功

 5. 验证从节点监听主节点端口问题 

我们验证b从节点所在主机监听端口发现,其不仅监听自己配置的端口,还监听主节点所监听的端口。内容如下:

在这种情况,RocketMQ无法进行单主机搭建集群测试,因为从节点会多监听两个主节点的端口。

当主节点未启动时,从节点会多监听一个主节点的listenPort端口,也就是监听三个端口,而当主节点启动后,从节点会多监听一个主节点的haListenPort端口,也就是同事监听四个端口。

这和默认端口无关,因为更改主节点端口,从节点监听的端口也会改变,完全就是跟着主节点变,并且主节点不会监听从节点端口,这一现象很奇怪,不知道原因。

RocketMQ-Dashboard可视化界面部署

RocketMQ-Console是RocketMQ官方推出的一款RocketMQ的可视化工具,目前已经更名为RocketMQ-Dashboard,独立在一个git仓库,部署步骤如下:

1. 下载源码并打包

我们可以进入到RocketMQ-Dashboard的github网站,通过git命令拉取源码,或者直接下载压缩文件

修改项目中application.yml文件中的如下内容,配置nameServer集群的ip和端口:

rocketmq:config:namesrvAddrs:- 192.168.166.21:9876- 192.168.166.22:9876

通过如下命令打包

mvn clean package -Dmaven.test.skip=true

我们在其项目的readme文件中也能看到其打包和运行指令

2. 启动jar包 

将打包后的jar包传入服务器或虚拟机后,通过如下命令启动:

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

看到如下内容证明启动成功

3. 验证RocketMQ-DashBoard和集群的部署

访问启动服务的地址的8080端口,进入可视化页面,点击集群,可以查看我们的全部集群节点信息。

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

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

相关文章

在 Ubuntu 环境下使用 VSCode 和 PlatformIO 下载程序到 Arduino Uno

安装 VSCode 访问 VSCode 官网 下载 .deb 包使用以下命令安装&#xff1a;sudo dpkg -i <下载的文件名>.deb sudo apt-get install -f安装 PlatformIO 扩展 在 VSCode 中&#xff0c;转到扩展市场&#xff08;CtrlShiftX&#xff09;搜索 “PlatformIO IDE”点击 “安装”…

STM32 HAL CAN (TJA1050CAN模块) 通讯(一)理论

1、简介 CAN具备多个设备交互的能力,但是网上大多是两个单片机进行交互,或者单片机通过CAN收发器与上位机进行交互测试,本次通过STM32cubeMX完成CAN通讯配置,并通过多个单片机进行数据交互测试。 2、CAN简介 CAN是一种串行通讯协议,主要有低速、高速CAN两种。 低速CAN…

相亲交友系统商业开发

在快节奏的现代生活中&#xff0c;寻找真爱成为了许多人的渴望。相亲交友系统&#xff0c;作为连接心灵的桥梁&#xff0c;正逐渐成为人们寻找伴侣的首选方式。我们的团队h17711347205致力于开发一款创新的相亲交友系统&#xff0c;旨在通过智能化的匹配算法&#xff0c;为用户…

Android UID 和 userID 以及 appID

我们知道Android 操作系统是基于Linux内核的&#xff0c;所以Android 的UID 是基于 Linux UID的。 Linux UID Linux 本身就是一个多用户操作系统&#xff0c;每一个用户都会有一个UID&#xff0c;不同UID 之间的资源访问是受限的。 其中&#xff0c;Linux的DAC权限模型&#…

【UE5】控件蓝图——树视图(TreeView)的基本使用

目录 前言 效果 步骤 一、显示根节点 二、显示子节点 前言 我们在视口中添加1个方块&#xff0c;2个球体&#xff0c;5个圆柱 它们在大纲视图中的层级关系如下&#xff0c;那么如何将这种层级关系显示在树视图中是本篇文章要解决的问题。 效果 步骤 一、显示根节点 1…

[STM32]从零开始的STM32标准库环境搭建(小白向)

一、我们为什么要搭建STM32标准库开发环境 如果你对STM32有一定的了解&#xff0c;相信你已经认识了STM32的几种开发方式。基于STM32寄存器开发&#xff0c;基于ST官方的标准库开发&#xff0c;基于ST官方的HAL库开发。我们现在来了解一下这些库的优缺点。首先就是基于寄存器开…

macos USB外接键盘ctrl键绑定方法 解决外接USB键盘与mac键盘不一致问题

mac电脑外接USB键盘后我们需要修改一下 ctrl键的绑定后才符合我们的使用习惯,因为标准USB键盘和mac键盘上面的ctrl键是不一样的, mac上面的 command 键 对应我们USB键盘上面的 ctrl 键. 修改方法: 偏好设置 --> 键盘 点击修饰键 后 选择键盘里面选择 USB键盘 ,然后调换…

Leetcode JAVA刷刷站(111)二叉树的最小深度

一、题目概述 二、思路方向 在Java中&#xff0c;要找出二叉树的最小深度&#xff0c;我们可以使用递归的方法。基本思路是&#xff0c;对于给定的根节点&#xff0c;如果它是空的&#xff0c;那么最小深度为0&#xff08;但实际上&#xff0c;空树没有深度&#xff0c;但在…

Sui Hacker House曼谷站报名开启:在Devcon 2024期间探索Sui区块链创新

Sui 曼谷 Hacker House 报名开启 Sui Bangkok Hacker House 将在曼谷于 2024 年 11 月 4 日至 17 日举办。诚邀开发者深入学习 Move 语言,在 Sui 网络上构建 MVP ,在充满活力的曼谷中度过难忘的两周。 诚挚地邀请开发者加入为期两周的 Sui Bangkok Hacker House。 你将与其他…

构建全景式智慧文旅生态:EasyCVR视频汇聚平台与AR/VR技术的深度融合实践

在科技日新月异的今天&#xff0c;AR&#xff08;增强现实&#xff09;和VR&#xff08;虚拟现实&#xff09;技术正以前所未有的速度改变着我们的生活方式和工作模式。而EasyCVR视频汇聚平台&#xff0c;作为一款基于云-边-端一体化架构的视频融合AI智能分析平台&#xff0c;可…

ubuntu 常见问题的收录

在使用过程中&#xff0c;发现ubuntu的问题一点不必windows少。因为每次遇到问题都需要要上网找&#xff0c;所以收集起来之后就会方便一些。 版本体验 24.04&#xff1a;整体的风格大变样&#xff0c;更趋近于“现代化”&#xff1f;反正我是更喜欢了 &#x1f604;。就着风…

C语言 ——— 宏和##的使用

目录 ##的作用 宏和##的使用 ##的作用 ##可以把位于它两边的符号合成一个符号它允许宏定义从分离的文本片段创建标识符 宏和##的使用 代码演示&#xff1a; #include<stdio.h>#define CAT(x,y) x##yint main() {int RecepInteger 2024;printf("%d\n",CAT…

使用Cloudflare构建RAG应用;端到端语音开源大模型;AI幻灯片生成器,等六个开源项目

✨ 1: Cloudflare RAG 如何使用Cloudflare构建一个完整的RAG应用&#xff0c;结合多种搜索技术和AI服务。 Cloudflare RAG&#xff08;Retrieval Augmented Generation&#xff09;是一个全栈示例&#xff0c;展示如何使用 Cloudflare 构建 RAG 应用程序。该项目结合了 Cloud…

2.6 大模型数据基础:大模型评估数据详解

本系列目录 《带你自学大语言模型》系列部分目录及计划&#xff0c;完整版目录见&#xff1a;带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型&#xff08;科普向&#xff09; 第一章 走进大语言模型 1.1 从图灵机到GPT&#xff0c;人工智能经历了什么&#xff1…

Unity教程(十三)敌人状态机

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

快排的深入学习

目录 交换类排序 一、冒泡排序 1. 算法介绍 2.算法流程 3. 算法性能分析 &#xff08;1&#xff09;时间复杂度分析 &#xff08;2&#xff09; 空间复杂度分析 冒泡排序的特性总结&#xff1a; 二、快速排序 1.算法介绍 2. 执行流程 1). hoare版本 2). 挖坑法 3)…

使用 scikit-learn 实战感知机算法

一 引言 感知机&#xff08;Perceptron&#xff09;是最早的人工神经网络模型之一&#xff0c;由 Frank Rosenblatt 在 1957 年提出。虽然它相对简单&#xff0c;但在处理线性可分问题时却非常有效。本文将介绍如何使用 Python 的 scikit-learn 库来实现感知机&#xff0c;并通…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文&#xff5c;华为云Flexus X实例docker部署srs6并调优&#xff0c;协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节&#xff0c;Flexus X实例的促销力度非常大&#xff0c;特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

Android 下的 XML 文件(概念理解、存储位置理解)

一、XML 1、XML 概述 XML&#xff08;Extensible Markup Language&#xff0c;可扩展标记语言&#xff09;是一种用于存储和传输数据的标记语言 类似于 HTML&#xff0c;但旨在传输和存储数据&#xff0c;而不是显示数据&#xff0c;且基本语法都是标签 2、XML 的特点 &am…

【数据结构与算法 | 搜索二叉树篇 力扣篇】力扣530, 501

1. 力扣530&#xff1a;二叉搜索树的最小绝对差 1.1 题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 示例 1&#xff1a; 输入&#xff1a;root [4,…