RocketMQ安装 - 集群搭建 - RocketMQ可视化管理界面
RocketMQ安装
很重要 JDK版本很重要
注意 RocketMQ是基于JDK1.8开发的,在安装RocketMQ前要安装好java并配置环境变量,最好使用JDK1.8,如果使用高版本的java会在启动RocketMQ时出错,需要修改相应配置参数
我是下载的4.4.0版本的Binary压缩文件
- 将压缩文件拷贝的linux系统安装目录
执行解压缩: unzip rocketmq-all-4.4.0-bin-release.zip
- 查看目录下文件: ll
- 修改JVM内存大小,RocketMQ默认的虚拟机内容较大,启动是会因内存不足而失败
进入到bin目录,修改runbroker.sh和runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
- 启动NameServer
### 首先启动Name Server
$ nohup sh bin/mqnamesrv &
### 验证Name Server 是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...
- 启动Broker
### 启动Broker
$ nohup sh bin/mqbroker -n localhost:9876 &
### 验证Broker是否启动成功,例如Broker的IP为:192.168.1.2,且名称为broker-a
$ tail -f ~/logs/rocketmqlogs/broker.log
The broker[broker-a, 192.169.1.2:10911] boot success...
启动、关闭和相关参照指令参考
运维管理: https://github.com/apache/rocketmq/blob/master/docs/cn/operation.md
开发指南: https://github.com/apache/rocketmq/tree/master/docs/cn
.
.
RocketMQ集群搭建
- RocketMQ集群的说明
-
NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。
-
Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave,Master也可以部署多个,每个Broker与NameServer集群中的每一个节点建立长连接,定时注册Topic信息到所有NameServer。
-
Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master建立长连接,且定时向Master发送心跳,Producer完全无状态,可集群部署。
-
Consumer与NameServer集群中的其中一个节点(随机选择)建立长连接,定期从NameServer取Topic路由信息,并向提供Topic服务的Master、Slave建立长连接,且定时向Master、Slave发送心跳,Consumer既可以从Master订阅消息,也可以从Slave订阅消息,订阅规则由Broker配置决定。
- NameServer集群
启动多个NameSrv即可如:
创建namesrv-a.properties文件并编辑内容来自设置nameserver的端口号,内容如下
listenPort=9877
nohup sh bin/mqnamesrv -c /usr/local/rocketmq/conf/namesrv-a.properties &
nohup sh bin/mqnamesrv -c /usr/local/rocketmq/conf/namesrv-b.properties &
- Broker集群的配置可以参考安装文件中conf目录下的配置
以2m-2s-sync为例,创建2主2从,主从之间的数据是同步的
下面是配置的
broker-a.properties //主broker配置
broker-a-s.properties //从broker配置
broker-b.properties //主broker配置
broker-b-s.properties //从broker配置
-
brokerClusterName:用来区分Broker集群,具有相同brokerClusterName表示是一个集群
-
brokerName: Broker用brokerName来区分不同的组,相同的brokerName为一组
-
brokerId: 具有相同brokerName的broker,brokerId=0是Master, brokerId大于0是Slave
-
namesrvAddr:Broker要注册到哪些NameServer服务,多个服务之间;分隔
-
brokerRole:主从数据同步策略 ASYNC_MASTER 异步复制master SYNC_MASTER 同步复制master SLAVE
-
flushDiskType:写入磁盘策略 ASYNC_FLUSH异步,SYNC_FLUSH同步
可以按照下面的配置内容来做修改
#所属集群名称
brokerClusterName=rocketmq-cluster
#broker名字
brokerName=broker-a
#brokerId, 0:master 1:slave
brokerId=0
#namesrv地址,多个地址分号分隔
namesrvAddr=192.168.128.128:9876;192.168.128.128:9878;
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否运行Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker对外服务器的监听端口
listenPort=1076
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30w条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/qiang/local/rocketmq/store
#commitLog存储路径
storePathCommitLog=/home/qiang/local/rocketmq/store/commitlog
#消息队列存储路径
storePathConsumeQueue=/home/qiang/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/home/qiang/local/rocketmq/store/index
#checkpoint文件存储路径
storeCheckpoint=/home/qiang/local/rocketmq/store/checkpoint文件存储路径
#abort文件存储路径
abortFile=/home/qiang/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65535
#Broker的角色
#ASYNC_MASTER 异步复制master
#SYNC_MASTER 同步复制master
#SLAVE 从节点使用SLAVE
brokerRole=SYNC_MASTER
#同步策略
#ASYNC_FLUSH异步刷盘,发送-写内存->发送成功,内存消息达到一定量时才写入磁盘
#SYNC_FLUSH同步刷屏,发送->写内存->写磁盘->发送成功
flushDiskType=SYNC_FLUSH
#发送消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
#开启权限控制,
#对应的权限控制属性(包括Topic访问权限、IP白名单和AccessKey和SecretKey签名等)设置在conf/plain_acl.yml的配置文件中
aclEnable=true
#开启消息轨迹,
traceTopicEnable=false
- 启动Broker集群:
$ nohup sh mqbroker -c /usr/local/rocketmq/conf/broker-a.properties &
$ nohup sh mqbroker -c /usr/local/rocketmq/conf/broker-a-s.properties &
$ nohup sh mqbroker -c /usr/local/rocketmq/conf/broker-b.properties &
$ nohup sh mqbroker -c /usr/local/rocketmq/conf/broker-b-s.properties &
.
.
RocketMQ可视化管理界面
下载地址: https://github.com/apache/rocketmq-dashboard
需要拷贝到linux系统,mac系统后进行编译,暂时不支持windows系统
改可视化系统是基于springboot开发的,所以在编译之前修改rocketmq的配置
找到application.yml文件修改rocketmq.config.namesrvAddrs
使用maven命令编译,进入到rocketmq-dashboard目录执行命令: mvn clean package
编译成功后会生成target目录,进入target目录执行命令: java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &
等待启动成功就可在浏览器中访问: