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

相关推荐
天天打码17 分钟前
ThinkPHP项目如何关闭runtime下Log日志文件记录
android·java·javascript
魔道不误砍柴功24 分钟前
Java 中反射的高级用法:窥探 Java 世界的魔法之门
java·开发语言·python
P7进阶路35 分钟前
实现用户登录系统的前后端开发
java
2401_8576176236 分钟前
“无缝购物体验”:跨平台网上购物商城的设计与实现
java·开发语言·前端·安全·架构·php
事业运财运爆棚39 分钟前
7种server的服务器处理结构模型
java·linux·服务器
西岭千秋雪_1 小时前
设计模式の中介者&发布订阅&备忘录模式
java·观察者模式·设计模式·中介者模式·备忘录模式
憶巷1 小时前
MyBatis中动态SQL执行原理
java·sql·mybatis
重生之绝世牛码1 小时前
Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解
java·大数据·开发语言·设计模式·享元模式·设计原则
seasugar1 小时前
记一次Maven拉不了包的问题
java·maven
Allen Bright1 小时前
【Java基础-26.1】Java中的方法重载与方法重写:区别与使用场景
java·开发语言