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

下载

环境

c 复制代码
64位操作系统,推荐 Linux/Unix/macOS
64位 JDK 1.8+

下载地址
https://rocketmq.apache.org/zh/download/

RocketMQ 的安装包分为两种,二进制包源码包。 二进制包是已经编译完成后可以直接运行的,源码包是需要编译后运行的。

单台服务

解压,启动服务

c 复制代码
#解压
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分别执行:

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

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

c 复制代码
# 服务器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分别执行:

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

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

c 复制代码
# 服务器A:启动第一个Master,例:两台服务器NameServer的IP为:192.168.1.1和192.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分别执行:

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

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

c 复制代码
# 服务器A:启动第一个Master,例:两台服务器NameServer的IP为:192.168.1.1和192.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重启或者宕机时,会导致整个服务不可用。不建议线上环境使用, 可以用于本地测试

c 复制代码
# 首先启动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执行

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

服务器A和服务器B执行

c 复制代码
# 服务器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执行

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

服务器A和服务器B执行

c 复制代码
# 服务器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执行

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

服务器A和服务器B执行

c 复制代码
# 服务器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

c 复制代码
# 服务器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 进行指定

c 复制代码
### 自定义配置文件
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安装,已安装的可以跳过

c 复制代码
#Centos
sudo yum install -y java-1.8.0-openjdk*

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

c 复制代码
#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安装,已安装可以跳过

拉取控制台

c 复制代码
git clone https://github.com/apache/rocketmq-dashboard.git

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

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

编译打包

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

c 复制代码
[root@localhost rocketmq-dashboard]# mvn clean package -Dmaven.test.skip=true

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

c 复制代码
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

启动:

c 复制代码
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

相关推荐
非 白15 分钟前
【Java】代理模式
java·开发语言·代理模式
Good Note25 分钟前
Golang的静态强类型、编译型、并发型
java·数据库·redis·后端·mysql·面试·golang
我就是我3521 小时前
记录一次SpringMVC的406错误
java·后端·springmvc
向哆哆1 小时前
Java应用程序的跨平台性能优化研究
java·开发语言·性能优化
ekkcole2 小时前
windows使用命令解压jar包,替换里面的文件。并重新打包成jar包,解决Failed to get nested archive for entry
java·windows·jar
handsomestWei2 小时前
java实现多图合成mp4和视频附件下载
java·开发语言·音视频·wutool·图片合成视频·视频附件下载
全栈若城2 小时前
03 Python字符串与基础操作详解
java·开发语言·python
伯牙碎琴2 小时前
二、Spring Framework基础:IoC(控制反转)和DI(依赖注入)
java·spring·log4j
菲力蒲LY2 小时前
输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
java·前端·mybatis
南宫生3 小时前
力扣每日一题【算法学习day.130】
java·学习·算法·leetcode