RocketMQ安装与配置

https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明#组件版本关系

1 单机

nameserver默认端口:9876

rocketmq默认端口:10911

路径:/usr/local/soft

1.1 基于Binary搭建

1.1.1 下载

官网:http://rocketmq.apache.org/

1
2
cd /usr/local/soft
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip

1.1.2 解压

解压二进制包

1
2
unzip rocketmq-all-4.9.4-bin-release.zip
mv rocketmq-all-4.9.4-bin-release rocketmq

创建数据存储目录

1
2
mkdir -p /usr/local/soft/rocketmq/store/broker-a /usr/local/soft/rocketmq/store/broker-a/consumequeue /usr/local/soft/rocketmq/store/broker-a/commitlog /usr/local/soft/rocketmq/store/broker-a/index 
/usr/local/soft/rocketmq/broker-a/logs

1.1.3 修改配置文件

1
2
cd /usr/local/soft/rocketmq/conf
vim broker.conf

增加内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Broker 对外服务的监听端口
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=localhost:9876
#存储路径
storePathRootDir=/usr/local/soft/rocketmq/store/broker-a
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq/store/broker-a/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq/store/broker-a/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq/store/broker-a/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq/store/broker-a/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq/store/broker-a/abort

在虚拟机中有可能因为内存不够而启动失败,修改bin目录下的runbroker.sh 和 runserver.sh 文件,比如把8g 4g 改成512m, 4g 2g改成256m

1.1.4 启动

1
2
nohup sh mqnamesrv &
nohup sh mqbroker -c /usr/local/soft/rocketmq/conf/broker.conf -n localhost:9876 &

验证是否启动成功,同时可以观察一下10911端口是否被占用

1
2
3
4
5
6
7
8
tail -f nohup.out
jps -l

lsof -i:9876
netstat -ano | grep "9876"

lsof -i:10911
netstat -ano | grep "10911"

1.1.5 避坑

  1. 网卡问题踩坑解决方案

如果centos上有多个网卡,此时broker使用的ip地址可能不是自己想要的,可以给broker设置对应的ip地址,在conf/broker.conf中进行设置,最后一行加上 brokerIP1=192.168.1.8,然后停止broker后再启动: nohup sh bin/mqbroker -c conf/broker.conf -n localhost:9876 &

1.1.6 关闭服务

1
2
3
4
cd /usr/local/soft/rocketmq/bin

sh mqshutdown namesrv
sh mqshutdown broker

1.1.7 Dashboard

(1)下载rocketmq-dashboard源码并解压 下载链接:https://github.com/apache/rocketmq-dashboard

(2)进入源码的resources目录

1
cd rocketmq-dashboard/src/main/resources/ 

(3)修改application.yml文件

(4)回到rocketmq-dashboard的根目录,执行maven打包命令

(5)进入rocketmq-dashboard的target目录,找到打包好的jar包,启动该jar包

1
2
3
nohup java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar &
tail -f nohup.out
lsof -i:18080

(6)通过浏览器访问

1.2 基于Source搭建

1.2.1 源码准备

(1)解压源码包

(2)来到源码根目录,打开terminal,使用mvn构建一下

(3)将源码导入到idea中

(4)将distribution中的conf文件夹复制到根目录下

1.2.2 启动NameServer

(1)配置启动参数

(2)通过NamesrvStartup#main方法启动

(3)查看端口监听

1
netstat -ano | findstr "9876"

1.2.3 启动Broker

(1)修改conf文件夹下的broker.conf配置

1
2
3
4
5
6
7
8
9
10
11
12
13
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
namesrvAddr=localhost:9876
deleteWhen = 04
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable=true
storePathRootDir=D:\\share\\vip\\sc\\rocketmq\\store
storePathCommitLog=D:\\share\\vip\\sc\\rocketmq\\store\\commitlog
storePathConsumeQueue=D:\\share\\vip\\sc\\rocketmq\\store\\consumequeue
storePathIndex=D:\\share\\vip\\sc\\rocketmq\\store\\index
storeCheckpoint=D:\\share\\vip\\sc\\rocketmq\\store\\checkpoint

(2)配置启动参数

(3)通过BrokerStartup#main启动Broker,观察控制台打印信息

(4)查看端口监听

1
netstat -ano | findstr "10911"

1.2.4 Dashboard

(1)下载rocketmq-dashboard源码并解压 下载链接:https://github.com/apache/rocketmq-dashboard

(2)进入源码的resources目录 cd rocketmq-dashboard/src/main/resources/

(3)修改application.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server:
port: 18080
servlet:
encoding:
charset: UTF-8
enabled: true
force: true

spring:
application:
name: rocketmq-dashboard

logging:
config: classpath:logback.xml
rocketmq:
config:
#nameserver地址
namesrvAddrs:
-127.0.0.1:9876

(4)打开App类,启动

(5)查看端口监听

(6)通过浏览器访问rocketmq-dashboard

2 集群

二主二从异步集群部署

2.1 节点规划

第一台机器 192.168.44.163,端口规划:
9876 NameServer1
10910 BrokerA-master
10921 BrokerB-slave

第二台机器 192.168.44.164,端口规划:
9876 NameServer2
10920 BrokerB-master
10911 BrokerA-slave

2.2 下载解压

从官网首页最新发布版本进入下载地址 http://rocketmq.apache.org/

1
2
unzip rocketmq-all-4.7.1-bin-release.zip
mv rocketmq-all-4.7.1-bin-release rocketmq

在两台机器上都下载、解压好。

在rocketmq/conf目录下,有三种建议配置模式:

  1. 2m-2s-async(2主2从异步) —— 本文采用这种

  2. 2m-2s-sync (2主2从同步)

  3. 2m-noslave (2主)

现在需要修改两台机器上2m-2s-async这个目录中的文件。配置文件修改之前先备份。

2.3 配置第一台机器

192.168.44.163的两个配置文件

(1)broker-a.properties

1
2
cd /usr/local/soft/rocketmq/conf/2m-2s-async
vim broker-a.properties

修改的内容(名字自定义,保持一致,否则不能组成集群)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
brokerClusterName=test-cluster

#增加的内容
#Broker 对外服务的监听端口
listenPort=10910
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=192.168.44.163:9876;192.168.44.164:9876
#存储路径
storePathRootDir=/usr/local/soft/rocketmq/store/broker-a
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq/store/broker-a/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq/store/broker-a/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq/store/broker-a/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq/store/abort

(2)broker-b-s.properties

1
vim  broker-b-s.properties

修改的内容(名字自定义,保持一致,否则不能组成集群)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
brokerClusterName=test-cluster

#增加的内容
#Broker 对外服务的监听端口
listenPort=10921
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=192.168.44.163:9876;192.168.44.164:9876
#存储路径
storePathRootDir=/usr/local/soft/rocketmq/store/broker-b-s
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq/store/broker-b-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq/store/broker-b-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq/store/broker-b-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq/store/abort

2.4 配置第二台机器

192.168.44.164的两个配置文件,修改的内容基本一致,主要是注意一下端口号、路径名。

(1)broker-b.properties

1
2
cd /usr/local/soft/rocketmq/conf/2m-2s-async
vim broker-b.properties

修改的内容(名字自定义,保持一致,否则不能组成集群)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
brokerClusterName=test-cluster

#增加的内容
#Broker 对外服务的监听端口
listenPort=10920
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=192.168.44.163:9876;192.168.44.164:9876
#存储路径
storePathRootDir=/usr/local/soft/rocketmq/store/broker-b
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq/store/broker-b/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq/store/broker-b/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq/store/broker-b/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq/store/abort

(2)broker-a-s.properties

1
2
cd /usr/local/soft/rocketmq/conf/2m-2s-async
vim broker-a-s.properties

修改的内容(名字自定义,保持一致,否则不能组成集群)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
brokerClusterName=test-cluster

#Broker 对外服务的监听端口
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#nameServer地址,分号分割
namesrvAddr=192.168.44.163:9876;192.168.44.164:9876
#存储路径
storePathRootDir=/usr/local/soft/rocketmq/store/broker-a-s
#commitLog 存储路径
storePathCommitLog=/usr/local/soft/rocketmq/store/broker-a-s/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/soft/rocketmq/store/broker-a-s/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/soft/rocketmq/store/broker-a-s/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/soft/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/usr/local/soft/rocketmq/store/abort

2.5 创建数据目录

第一台机器163执行(只需要执行一次)

1
mkdir -p /usr/local/soft/rocketmq/store/broker-a /usr/local/soft/rocketmq/store/broker-a/consumequeue /usr/local/soft/rocketmq/store/broker-a/commitlog /usr/local/soft/rocketmq/store/broker-a/index /usr/local/soft/rocketmq/logs /usr/local/soft/rocketmq/store/broker-b-s /usr/local/soft/rocketmq/store/broker-b-s/consumequeue /usr/local/soft/rocketmq/store/broker-b-s/commitlog /usr/local/soft/rocketmq/store/broker-b-s/index

第二台机器164执行(只需要执行一次)

1
mkdir -p /usr/local/soft/rocketmq/store/broker-a-s /usr/local/soft/rocketmq/store/broker-a-s/consumequeue /usr/local/soft/rocketmq/store/broker-a-s/commitlog /usr/local/soft/rocketmq/store/broker-a-s/index /usr/local/soft/rocketmq/logs /usr/local/soft/rocketmq/store/broker-b /usr/local/soft/rocketmq/store/broker-b/consumequeue /usr/local/soft/rocketmq/store/broker-b/commitlog /usr/local/soft/rocketmq/store/broker-b/index

2.6 启动两个NameServer

1
2
3
4
5
#启动第一台机器163的NameServer
nohup sh /usr/local/soft/rocketmq/bin/mqnamesrv >/usr/local/soft/rocketmq/logs/mqnamesrv.log 2>&1 &

#启动第二台机器164的NameServer
nohup sh /usr/local/soft/rocketmq/bin/mqnamesrv >/usr/local/soft/rocketmq/logs/mqnamesrv.log 2>&1 &

2.7 启动Broker

1、启动节点1,163的 broker-a-master,在163上面执行

1
nohup sh /usr/local/soft/rocketmq/bin/mqbroker -c /usr/local/soft/rocketmq/conf/2m-2s-async/broker-a.properties > /usr/local/soft/rocketmq/logs/broker-a.log 2>&1 &

在虚拟机中可能由于内存不够导致无法启动,改动

1
2
3
4
vim /usr/local/soft/rocketmq/bin/runbroker.sh

#把8g和4g改成512m和256m
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

2、启动节点2,164的broker-a-s,在164上面执行

1
nohup sh /usr/local/soft/rocketmq/bin/mqbroker -c /usr/local/soft/rocketmq/conf/2m-2s-async/broker-a-s.properties > /usr/local/soft/rocketmq/logs/broker-a-s.log 2>&1 &

3、启动节点2,164的 broker-b-master,在164上面执行

1
nohup sh /usr/local/soft/rocketmq/bin/mqbroker -c /usr/local/soft/rocketmq/conf/2m-2s-async/broker-b.properties > /usr/local/soft/rocketmq/logs/broker-b.log 2>&1 &

4、启动节点1,163的broker-b-s,在163上面执行

1
nohup sh /usr/local/soft/rocketmq/bin/mqbroker -c /usr/local/soft/rocketmq/conf/2m-2s-async/broker-b-s.properties > /usr/local/soft/rocketmq/logs/broker-b-s.log 2>&1 &

查看端口启动状态:
netstat -an|grep 109

第一台机器 192.168.44.163,端口规划:
9876 NameServer1
10910 BrokerA-master
10921 BrokerB-slave

第二台机器 192.168.44.164,端口规划:
9876 NameServer2
10920 BrokerB-master
10911 BrokerA-slave

3 常用管理命令

https://blog.csdn.net/gwd1154978352/article/details/80829534


RocketMQ安装与配置
http://www.zivjie.cn/2023/06/11/消息队列/RocketMQ/安装与配置/
作者
Francis
发布于
2023年6月11日
许可协议