RocketMQ(模式详解,安装)及控制台安装

下载

环境

64位操作系统,推荐 Linux/Unix/macOS
64位 JDK 1.8+

下载地址
https://rocketmq.apache.org/zh/download/
在这里插入图片描述
RocketMQ 的安装包分为两种,二进制包源码包。 二进制包是已经编译完成后可以直接运行的,源码包是需要编译后运行的。

单台服务

解压,启动服务

#解压
unzip rocketmq-all-5.0.0-bin-release.zip
#切换目录到RocketMQ根目录
cd rocketmq-all-5.0.0-bin-release
#启动Name Server
nohup sh bin/mqnamesrv &
# 验证namesrv是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
#启动Broker+Proxy
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
#验证broker是否启动成功
tail -f ~/logs/rocketmqlogs/broker_default.log

local模式集群

多组节点(集群)单副本模式

一个集群内全部部署 Master 角色,不部署Slave 副本,例如2个Master或者3个Master,这种模式的优缺点如下:
优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

服务器A和服务器B分别执行:

# 首先启动NameServer
nohup sh mqnamesrv & 
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B分别执行:也可以只使用一个NameServer,我是使用两个服务器的,以下同理。

# 服务器A:启动第一个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &
# 服务器B:启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties --enable-proxy &

多节点(集群)多副本模式-异步复制

每个Master配置一个Slave,有多组 Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

服务器A和服务器B分别执行:

# 首先启动NameServer
nohup sh mqnamesrv & 
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B分别执行:

# 服务器A:启动第一个Master,例:两台服务器NameServer的IP为:192.168.1.1192.168.1.2:9876
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties --enable-proxy &
# 服务器A:启动第一个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties --enable-proxy & 
# 服务器B:启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties --enable-proxy &
# 服务器B:启动第二个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties --enable-proxy & 

多节点(集群)多副本模式-异步复制

每个Master配置一个Slave,有多组 Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

服务器A和服务器B分别执行:

# 首先启动NameServer
nohup sh mqnamesrv & 
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B分别执行:

# 服务器A:启动第一个Master,例:两台服务器NameServer的IP为:192.168.1.1192.168.1.2:9876
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties --enable-proxy &
# 服务器A:启动第一个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties --enable-proxy & 
# 服务器B:启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties --enable-proxy &
# 服务器B:启动第二个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties --enable-proxy & 

Cluster模式部署

在 Cluster 模式下,Broker 与 Proxy分别部署,我可以在 NameServer和 Broker都启动完成之后再部署 Proxy。
在 Cluster模式下,一个 Proxy集群和 Broker集群为一一对应的关系,可以在 Proxy的配置文件 rmq-proxy.json 中使用 rocketMQClusterName 进行配置

单组节点单副本模式(单台服务器)

这种方式风险较大,因为 Broker 只有一个节点,一旦Broker重启或者宕机时,会导致整个服务不可用。不建议线上环境使用, 可以用于本地测试

# 首先启动Name Server
nohup sh mqnamesrv &
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
# 在服务器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 &

多组节点(集群)单副本模式

一个集群内全部部署 Master 角色,不部署Slave 副本,例如2个Master或者3个Master,这种模式的优缺点如下:
优点:配置简单,单个Master宕机或重启维护对应用无影响,在磁盘配置为RAID10时,即使机器宕机不可恢复情况下,由于RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢),性能最高;
缺点:单台机器宕机期间,这台机器上未被消费的消息在机器恢复之前不可订阅,消息实时性会受到影响。

服务器A和服务器B执行

# 首先启动Name Server
nohup sh mqnamesrv &
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B执行

# 服务器A:启动第一个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-a.properties &
# 在服务器B,启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-noslave/broker-b.properties &

多节点(集群)多副本模式-异步复制

每个Master配置一个Slave,有多组 Master-Slave,HA采用异步复制方式,主备有短暂消息延迟(毫秒级),这种模式的优缺点如下:
优点:即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,同时Master宕机后,消费者仍然可以从Slave消费,而且此过程对应用透明,不需要人工干预,性能同多Master模式几乎一样;
缺点:Master宕机,磁盘损坏情况下会丢失少量消息。

服务器A和服务器B执行

# 首先启动Name Server
nohup sh mqnamesrv &
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B执行

# 服务器A:启动第一个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a.properties &
# 服务器A:启动第一个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-a-s.properties &# 服务器B:启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
# 服务器B:启动第二个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-async/broker-b-s.properties &

多节点(集群)多副本模式-同步双写

每个Master配置一个Slave,有多对 Master-Slave,HA采用同步双写方式,即只有主备都写成功,才向应用返回成功,这种模式的优缺点如下:
优点:数据与服务都无单点故障,Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高;
缺点:性能比异步复制模式略低(大约低10%左右),发送单个消息的RT会略高,且目前版本在主节点宕机后,备机不能自动切换为主机。
服务器A和服务器B执行

# 首先启动Name Server
nohup sh mqnamesrv &
# 验证Name Server 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

服务器A和服务器B执行

# 服务器A:启动第一个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
# 服务器A:启动第一个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &# 服务器B:启动第二个Master
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
# 服务器B:启动第二个Slave
nohup sh bin/mqbroker -n 192.168.1.1:9876;192.168.1.2:9876 -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &

启动 Proxy

# 服务器A,启动第一个Proxy
nohup sh bin/mqproxy -n 192.168.1.1:9876;192.168.1.2:9876 &
# 服务器B,启动第二个Proxy
nohup sh bin/mqproxy -n 192.168.1.1:9876;192.168.1.2:9876 &

若需要指定配置文件,可以使用 -pc或者 --proxyConfigPath 进行指定

### 自定义配置文件
nohup sh bin/mqproxy -n 192.168.1.1:9876 -pc /path/to/proxyConfig.json &

上文参考来源:
模式详解:https://developer.aliyun.com/article/1261853
【Linux】RocketMQ-Cluster集群搭建
https://blog.csdn.net/qq_51228157/article/details/126967486
https://www.cnblogs.com/sunyonggao/p/17485244.html

rocketmq运维控制台搭建

环境配置

jdk安装,已安装的可以跳过

#Centos
sudo yum install -y java-1.8.0-openjdk*

maven安装及配置,已安装的可以跳过

#Centos
sudo yum install -y maven.noarch
#配置
sudo vim /usr/share/maven/conf/settings.xml
<mirrors><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>       </mirror>
</mirrors>

获取控制台

先查看:
https://github.com/apache/rocketmq-externals.git
在这里插入图片描述
会发现rocket-console不在里面了,rocket-console是之前的版本,现已经创建了一个独立的仓库并命名为RocketMQ Dashboard,地址在:https://github.com/apache/rocketmq-dashboard

安装控制台

git安装,已安装可以跳过
在这里插入图片描述
拉取控制台

git clone https://github.com/apache/rocketmq-dashboard.git

修改配置文件:修改server.port和rocketmq.config.namesrvAddrs(NameServer的地址(多个的话使用;连接))

单个:192.168.1.1:9876
多个:192.168.1.1:9876;192.168.1.2:9876
[root@localhost rocketmq-dashboard]# vim src/main/resources/application.yml

在这里插入图片描述

编译打包

失败可以多尝试几次–可能是网络问题

[root@localhost rocketmq-dashboard]# mvn clean package -Dmaven.test.skip=true

如果报以下错误:把pom.xml中的frontend-maven-plugin和maven-antrun-plugin插件注释掉就能打包成功了

Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.11.3:yarn (yarn install) on project rocketmq-dashboard

打包成功在target文件夹下有jar包
在这里插入图片描述
异常参考:https://www.bilibili.com/read/cv22491621

启动:

nohup java -jar rocketmq-dashboard.jar >/mnt/logs/rocketmqlogs/consolelog.out 2>&1 &

启动成功之后访问:http://IP地址:8088
在这里插入图片描述
控制台参考资料:
https://tool.4xseo.com/a/8013.html
https://blog.csdn.net/so_geili/article/details/90142461
https://www.jianshu.com/p/5f70e34448ce
新版本RocketMQ配置Web管理界面:解决找不到rocketmq-console目录问题:
https://blog.csdn.net/qq_43631716/article/details/119747200

详细资料:https://blog.csdn.net/qq_37242720/article/details/126567047

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

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

相关文章

LVS负载均衡DR(直接路由)模式

在LVS&#xff08;Linux Virtual Server&#xff09;负载均衡中的DR&#xff08;Direct Routing&#xff09;模式下&#xff0c;数据包的流向如下&#xff1a; 客户端发送请求到负载均衡器&#xff08;LVS&#xff09;的虚拟IP&#xff08;VIP&#xff09;。负载均衡器&#x…

Bryntum Scheduler Pro 5.5.1 Crack

BRYNTUM 调度程序专业版,专业的日程安排小部件 Bryntum Scheduler Pro 5.5.1 一个专业有大脑的调度UI组件。Scheduler Pro 可帮助您安排任务&#xff0c;同时考虑资源和任务的可用性。 连接您的任务 让 Scheduler Pro 处理剩下的事情。它将根据您定义的链接安排您的任务并遵守任…

ansible 修改远程主机nginx配置文件

安装ansible brew install ansible 或者 pip3 install ansible 添加远程主机 设置秘钥 mac登录远程主机 ssh -p 5700 root192.168.123.211 ssh localhost #设置双机信任 ssh-kyegen -t rsa #设置主机两边的ssh配置文件 vi /etc/ssh/sshd_config/ PermitRootL…

UniApp 制作高德地图插件

1、下载Uni插件项目 在Uni官网下载Uni插件项目&#xff0c;并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…

207. 课程表

思路 首先要完全理解题意&#xff0c;这道题的[a,b]并不是b满足了a就可以真正的学习a这门课了&#xff0c;因为a还有可能需要其他选修课的条件。类似下图。   这题的思路在于使用合适的数据结构来存储&#xff0c;这里用hash表来存储如果1这门课可以修了之后&#xff0c;可以…

docker pull 设置代理 centos

On CentOS the configuration file for Docker is at: /etc/sysconfig/docker 用 root 权限打开 text editor sudo gedit 注意 加引号 Adding the below line helped me to get the Docker daemon working behind a proxy server: HTTP_PROXY“http://<proxy_host>:&…

ubuntu20.04磁盘满了 /dev/mapper/ubuntu--vg-ubuntu--lv 占用 100%

问题 执行 mysql 大文件导入任务&#xff0c;最后快完成了&#xff0c;查看结果发现错了&#xff01;悲催&#xff01;都执行了 两天了 The table ‘XXXXXX’ is full &#xff1f; 磁盘满了&#xff1f; 刚好之前另一个 centos 服务器上也出现过磁盘满了&#xff0c;因此&a…

LeetCode 38题:外观数列

题目 给定一个正整数 n &#xff0c;输出外观数列的第 n 项。 「外观数列」是一个整数序列&#xff0c;从数字 1 开始&#xff0c;序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列&#xff1a; countAndSay(1) "1"countAnd…

【使用群晖远程链接drive挂载电脑硬盘】

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 前言 群晖作为专业的数据存储中心&…

《TCP IP网络编程》第十六章

第 16 章 关于 I/O 流分离的其他内容 16.1 分离 I/O 流 「分离 I/O 流」是一种常用表达。有 I/O 工具可区分二者&#xff0c;无论采用哪种方法&#xff0c;都可以认为是分离了 I/O 流。 2次 I/O 流分离&#xff1a; 第一种是第 10 章的「TCP I/O 过程」分离。通 shutdown(soc…

C++STL——deque容器详解

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.deque容器的基本概念二.deque容器常用操作①deque构造函数②deque元素操作③deque赋值操作④deque交换操作⑤deque大小操作⑥deque插入和删除…

直方图均衡化和自适应直方图均衡化

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 均衡化是数字图像处理中常用的一种技术&#xff0c;用于增强图像的视觉效果和对比度。&#xff0c;今天我们将实现对同一张图像的直方图均衡化和自适应直方图均衡化处理&#xff0c;学习一下两者的的基本原理和实现过程&a…

React 高阶组件(HOC)

React 高阶组件(HOC) 高阶组件不是 React API 的一部分&#xff0c;而是一种用来复用组件逻辑而衍生出来的一种技术。 什么是高阶组件 高阶组件就是一个函数&#xff0c;且该函数接受一个组件作为参数&#xff0c;并返回一个新的组件。基本上&#xff0c;这是从 React 的组成…

docker 安装elasticsearch、kibana

下载es镜像 docker pull elasticsearch 启动es容器 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d elasticsearch 验证es界面访问 ​​​​​http://节点ip:9200/ ​…

client-go实战之十二:选主(leader-election)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《client-go实战》系列的第十二篇&#xff0c;又有一个精彩的知识点在本章呈现&#xff1a;选主(leader-election)在解释什么是选主之前&…

【自用】云服务器 docker 环境下 HomeAssistant 安装 HACS 教程

一、进入 docker 中的 HomeAssistant 1.查找 HomeAssistant 的 CONTAINER ID 连接上云服务器&#xff08;宿主机&#xff09;后&#xff0c;终端内进入 root &#xff0c;输入&#xff1a; docker ps找到了 docker 的 container ID 2.config HomeAssistant 输入下面的命令&…

修改el-table行悬停状态的背景颜色

.content:deep().el-table tr:hover>td {background-color: #f5f5f5 !important; /* 设置悬停时的背景颜色 */ }/*这一点很重要&#xff0c;否则可能会导致hover行时操作列还是原来的背景色*/ .content:deep().el-table__body tr.hover-row>td{background-color: #f5f5f5…

使用Nacos配置中心动态管理Spring Boot应用配置

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Linux权限系列--给普通用户添加某个命令的sudo权限

原文网址&#xff1a;Linux权限系列--给普通用户添加某个命令的sudo权限_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Linux系统如何给普通用户添加某个命令的sudo权限。 使用场景 普通开发者可能需要sudo的命令&#xff1a; apt-get&#xff08;经常要安装软件&#x…

Java IO流(一)IO基础

概述 IO流本质 I/O表示Input/Output,即数据传输过程中的输入/输出,并且输入和输出都是相对于内存来讲Java IO(输入/输出)流是Java用于处理数据读取和写入的关键组件常见的I|O介质包括 文件(输入|输出)网络(输入|输出)键盘(输出)显示器(输出)使用场景 文件拷贝&#xff08;File&…