系统环境
Java:openjdk version "1.8.0_392"
操作系统: 腾讯云 Ubuntu 20.04镜像
RocketMQ:rocketmq-5.1.4
下载RocketMQ
官网下载入口,见“下载安装”部分
GitHub仓库下载
Ubuntu镜像下载:
# Download release from the Apache mirror
$ wget https://dist.apache.org/repos/dist/release/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
部署
安装
将下载好的rocketmq存放到指定的工作目录,本文工作目录为/opt,执行命令如下:
mv rocketmq-all-5.1.4-bin-release.zip /opt
进入工作目录,并解压安装rocketmq,命令如下:
#进入安装目录
cd /opt
#解压安装包
unzip rocketmq-all-5.1.4-bin-release.zip
组件说明
rocketmq-5.x版本包含NameServer、Broker、Proxy三个组件
- NameServer:注册中心,负责维护Broker的注册信息,并提供Broker查找服务。Producer和Consumer在发送和接收消息之前,都需要先向NameServer获取Broker的地址信息。
- Broker:RocketMQ的消息服务器,负责消息的存储、接收和发送。
- Proxy: 代理组件,可以为RocketMQ集群提供负载均衡、流量控制、限流等功能。5.x之前的版本不提供,非必须部署。
部署方式
rocketmq-5.x新增了Proxy组件,根据Proxy组件的方式可以分为Local模式部署和Cluster模式部署。
Local模式部署:本地部署,Broker 和 Proxy 是同进程部署,只是在原有 Broker 的配置基础上新增 Proxy 的简易配置就可以运行。
Cluster模式部署:独立部署,Broker 和 Proxy 分别部署,即在原有的集群基础上,额外再部署 Proxy 即可。
Local模式部署
Proxy本身无状态,因此主要的集群配置仍然以 Broker 为基础进行即可。
启动NameServer
进入bin目录,并执行启动命令
#进入目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
#执行启动命令
nohup sh mqnamesrv &
注意:NameServer启动脚本中分配的jvm运行内存为4G,测试环境可根据实际需求做更改,笔者更改效果如下:
runserver.sh
启动Broker+Proxy
配置调整
笔者使用的是云服务器,存在对内和对公两个ip地址,需要在配置中指定Broker注册时使用ip为对公ip;不存在该问题时可忽略这一步。
vim /opt/rocketmq-all-5.1.4-bin-release/conf/broker.conf
#修改brokerIP1属性为对公ip
broker的默认占用内存为8G,可按照实际需求调整,笔者调整如下:
runbroker.sh
执行启动命令
进入bin目录,并执行启动命令
#进入目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
#执行启动命令,localhost:9876修改为NameServer的注册地址与端口
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
Cluster模式部署
- NameServer: 部署步骤与local模式一致
- Broker: 除了启动命令,其它部署步骤与local模式中的Broker+proxy一致,命令如下:
### 在机器A,启动第一个Master,例如NameServer的IP为:192.168.1.1
nohup sh bin/mqbroker -n 192.168.1.1:9876 &
- proxy: 在独立的服务器中下载安装rocketmq-all-5.1.4-bin-release,之后执行如下操作:
#进入工作目录
cd /opt/rocketmq-all-5.1.4-bin-release/bin
###启动Proxy,例如NameServer的IP为:192.168.1.1
$ nohup sh bin/mqproxy -n 192.168.1.1:9876 &
进阶部署方式
由于笔者部署RocketMQ目的是用于熟悉RocketMQ的相关功能,所以本文只描述的单节点部署的方式;除此外还有如下部署方式:
- 多节点单副本:同时部署多个Master节点,不部署Slave;可以提高可用性,单宕机时当台机器上未消费的消息不可恢复
- 多节点多副本-异步复制:同时部署多个Master节点,每个Master分别部署一个Slave,主节点的消息采用异步方式批量同步到副本节点;提高了可靠性和吞吐量,但是副本节点消息存在短暂的延时,机器宕机时存在少了消息丢失。
- 多节点多副本-同步复制:同时部署多个Master节点,每个Master分别部署一个Slave,主节点的消息采用同步方式实时同步到副本节点;提高了可靠性和吞吐量,机器宕机不会存在消息丢失,相较于异步同步性能有损耗。
- 主备自动切换:在同时部署主备的前提下,当主机宕机时,备机自动切换为主机,增加了可靠性。
具体部署过程参考: 官方部署方式说明
可视化客户端工具使用
RocketMQ Dashboard
官方提供的RocketMQ可视化管理工具
源码下载地址:https://github.com/apache/rocketmq-dashboard
修改appliction.yml配置中的rocketmq.config.namesrvAddrs为nameServer服务地址,可本地项目启动,也可以打包成Jar在服务器部署,系统效果如图: